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("Недостаточно прав"); } } }
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); } }
/// <summary> /// Возвращает описание анонимного пользователя /// </summary> /// <returns></returns> private XUser getAnonymousUser() { if (m_anonymusUser == null) { m_anonymusUser = m_SecurityProvider.CreateAnonymousUser(); } return(m_anonymusUser); }
/// <summary> /// Удаляет закешированное описание пользователя с заданным наименованием /// </summary> /// <param name="sUserName"></param> public void FlushUser(string sUserName) { XUser user = (XUser)m_AuthenticatedUsers[sUserName]; if (user != null) { user.SetFlushed(true); } }
/// <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); } }
/// <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); }
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("Недостаточно прав"); } }
public XNewObjectRights GetRightsOnNewObject(XUser user, DomainObjectData xobj) { return(XNewObjectRights.FullRights); }
public XObjectRights GetObjectRights(XUser user, DomainObjectData xobj) { return(XObjectRights.FullRights); }
public bool HasSaveObjectPrivilege(XUser user, DomainObjectData xobj, out Exception ex) { ex = null; return(true); }
/// <summary> /// Обновляет описание пользователя, которое было сброшено /// </summary> /// <param name="user">Экземпляр XUser или производный, у которого свойство IsFlushed=true</param> public void UpdateUser(XUser user) { }