public static XPrivilegeSet CreatePrivilegeSet(FolderPrivileges nPrivilegeMask) { FolderPrivilegesItem[] items = FolderPrivilegesItem.GetItems(nPrivilegeMask); return(CreatePrivilegeSet(items)); }
public ITFolderPrivilege(FolderPrivilegesItem value) : base(value.Name, value.Description) { m_value = value.Value; }
public bool HasFolderPrivilege(ITUser user, FolderPrivileges privilege, DomainObjectData xobjFolder, XStorageConnection con) { // т.к. компонент может использоваться не только через методы XSecurityManager: GetObjectRights, HasSaveObjectRights, etc. if (user.IsUnrestricted) { return(true); } string sPrivilege = FolderPrivilegesItem.GetItem(privilege).Name; Guid orgID; Guid activityTypeID; FolderStates folderState; if (xobjFolder.IsNew) { if (!xobjFolder.HasUpdatedProp("Customer") || xobjFolder.GetUpdatedPropValue("Customer") == DBNull.Value) { return(false); } orgID = (Guid)xobjFolder.GetUpdatedPropValue("Customer"); if (!xobjFolder.HasUpdatedProp("ActivityType") || xobjFolder.GetUpdatedPropValue("ActivityType") == DBNull.Value) { return(false); } activityTypeID = (Guid)xobjFolder.GetUpdatedPropValue("ActivityType"); if (!xobjFolder.HasUpdatedProp("State") || xobjFolder.GetUpdatedPropValue("State") == DBNull.Value) { return(false); } folderState = (FolderStates)xobjFolder.GetUpdatedPropValue("State"); } else { if (!xobjFolder.HasLoadedProp("Customer") || !xobjFolder.HasLoadedProp("ActivityType") || !xobjFolder.HasLoadedProp("Parent") || !xobjFolder.HasLoadedProp("State")) { xobjFolder.Load(con); } orgID = (Guid)xobjFolder.GetLoadedPropValue("Customer"); activityTypeID = (Guid)xobjFolder.GetLoadedPropValue("ActivityType"); folderState = (FolderStates)xobjFolder.GetLoadedPropValue("State"); } // в закрытой папке ни у кого нет никаких привилегий if (folderState == FolderStates.Closed) { return(false); } if (user.ManageOrganization(orgID) || user.ManageActivityType(activityTypeID)) { return(true); } if (!xobjFolder.IsNew) { // для объекта из БД, проверим определение привилегий для участника проекта заданной и вышестоящих папок if (m_folderPrivilegesDefinitionContainer.GetPrivileges(user, xobjFolder.ObjectID, con).Contains(sPrivilege)) { return(true); } } else { // Для нового объекта зачитывать привилегии из БД бессмысленно - // проверим ссылку на родителя, если она задана, то зачитаем его привилегии object vValue = xobjFolder.GetUpdatedPropValue("Parent"); if (vValue is Guid) { if (m_folderPrivilegesDefinitionContainer.GetPrivileges(user, (Guid)vValue, con).Contains(sPrivilege)) { return(true); } } } return(false); }