Beispiel #1
0
        public void DemandSaveObjectPrivilege(DomainObjectData xobj)
        {
            XUser user = GetCurrentUser();

            if (user.IsUnrestricted)
            {
                return;
            }
            Exception exOut;
            bool      bAllow;

            try
            {
                bAllow = m_SecurityProvider.HasSaveObjectPrivilege(user, xobj, out exOut);
            }
            catch (Exception ex)
            {
                throw new ApplicationException("Ошибка во время проверки прав на сохранение объекта: " + xobj.ObjectType + " [" + xobj.ObjectID + "]:\n" + ex.Message, ex);
            }
            if (!bAllow)
            {
                if (exOut != null)
                {
                    throw new XSecurityException(exOut.Message);
                }
                else
                {
                    throw new XSecurityException("Недостаточно прав");
                }
            }
        }
Beispiel #2
0
        public XObjectRights GetObjectRights(DomainObjectData xobj)
        {
            XUser user = GetCurrentUser();

            if (user == null || xobj == null)
            {
                throw new ApplicationException("Ошибка в процессе проверки прав:\n");
            }
            if (user.IsUnrestricted)
            {
                return(XObjectRights.FullRights);
            }
            try
            {
                XObjectRights rights = m_SecurityProvider.GetObjectRights(user, xobj);
                if (rights == null)
                {
                    throw new XSecurityProviderErrorImplementationException("Метод GetObjectRights провайдера безопасности вернул null для объекта: " + xobj.ToString());
                }
                return(rights);
            }
            catch (Exception ex)
            {
                throw new ApplicationException("Ошибка в процессе проверки прав:\n" + ex.Message, ex);
            }
        }
Beispiel #3
0
 /// <summary>
 /// Возвращает описание анонимного пользователя
 /// </summary>
 /// <returns></returns>
 private XUser getAnonymousUser()
 {
     if (m_anonymusUser == null)
     {
         m_anonymusUser = m_SecurityProvider.CreateAnonymousUser();
     }
     return(m_anonymusUser);
 }
Beispiel #4
0
        /// <summary>
        /// Удаляет закешированное описание пользователя с заданным наименованием
        /// </summary>
        /// <param name="sUserName"></param>
        public void FlushUser(string sUserName)
        {
            XUser user = (XUser)m_AuthenticatedUsers[sUserName];

            if (user != null)
            {
                user.SetFlushed(true);
            }
        }
Beispiel #5
0
        /// <summary>
        /// Проверка на сохранение объекта в БД, поступившего от клиента, в рамках датаграммы
        /// </summary>
        /// <param name="xobj">Сохраняемый объект</param>
        public bool HasSaveObjectPrivilege(DomainObjectData xobj)
        {
            XUser user = GetCurrentUser();

            if (user.IsUnrestricted)
            {
                return(true);
            }
            try
            {
                Exception ex;
                return(m_SecurityProvider.HasSaveObjectPrivilege(user, xobj, out ex));
            }
            catch (Exception ex)
            {
                throw new ApplicationException("Ошибка в процессе проверки прав:\n" + ex.Message, ex);
            }
        }
Beispiel #6
0
        /// <summary>
        /// Возвращает описание пользователя по его наименованию
        /// </summary>
        /// <param name="sUserName">Наименование пользователя приложения</param>
        /// <remarks>
        /// Если описание было сброшено (Flush), то оно будет переполучено от SecurityProvider'a
        /// </remarks>
        /// <returns></returns>
        public XUser GetXUser(string sUserName)
        {
            XUser user = (XUser)m_AuthenticatedUsers[sUserName];

            if (user == null)
            {
                user = m_SecurityProvider.CreateUser(sUserName);
                Debug.Assert(user != null);
                if (user == null)
                {
                    throw new XSecurityProviderErrorImplementationException("SecurityProvider.CreateUser вернул null!");
                }
                m_AuthenticatedUsers[sUserName] = user;
            }
            else if (user.IsFlushed)
            {
                m_SecurityProvider.UpdateUser(user);
                user.SetFlushed(false);
            }
            return(user);
        }
Beispiel #7
0
        public void DemandDeleteObjectPrivilege(DomainObjectData xobj)
        {
            XUser user = GetCurrentUser();

            if (user.IsUnrestricted)
            {
                return;
            }
            bool bAllow;

            try
            {
                bAllow = m_SecurityProvider.GetObjectRights(user, xobj).AllowDelete;
            }
            catch (Exception ex)
            {
                throw new ApplicationException("Ошибка во время проверки прав на удаление объекта: " + xobj.ObjectType + " [" + xobj.ObjectID + "]" + ex.Message, ex);
            }
            if (!bAllow)
            {
                throw new XSecurityException("Недостаточно прав");
            }
        }
Beispiel #8
0
 public XNewObjectRights GetRightsOnNewObject(XUser user, DomainObjectData xobj)
 {
     return(XNewObjectRights.FullRights);
 }
Beispiel #9
0
 public XObjectRights GetObjectRights(XUser user, DomainObjectData xobj)
 {
     return(XObjectRights.FullRights);
 }
Beispiel #10
0
 public bool HasSaveObjectPrivilege(XUser user, DomainObjectData xobj, out Exception ex)
 {
     ex = null;
     return(true);
 }
Beispiel #11
0
 /// <summary>
 /// Обновляет описание пользователя, которое было сброшено
 /// </summary>
 /// <param name="user">Экземпляр XUser или производный, у которого свойство IsFlushed=true</param>
 public void UpdateUser(XUser user)
 {
 }