private static IEnumerable <PermissionType> GetInheritedGroupPermissionsTypesRecursivly(EntityToken entityToken, IEnumerable <UserGroupPermissionDefinition> userGroupPermissionDefinitions, List <EntityToken> visitedParents = null) { UserGroupPermissionDefinition selectedUserGroupPermissionDefinition = userGroupPermissionDefinitions.Where(f => entityToken.EqualsWithVersionIgnore(f.EntityToken)).SingleOrDefault(); if (selectedUserGroupPermissionDefinition != null) { if (selectedUserGroupPermissionDefinition.PermissionTypes.Contains(PermissionType.ClearPermissions) == false) { foreach (PermissionType permissionType in selectedUserGroupPermissionDefinition.PermissionTypes) { yield return(permissionType); } } yield break; } List <EntityToken> parentEntityTokens = ParentsFacade.GetAllParents(entityToken); if (visitedParents == null) { visitedParents = new List <EntityToken>(); } IEnumerable <PermissionType> parentsPermisstionTypes = new List <PermissionType>(); foreach (EntityToken parentEntityToken in parentEntityTokens) { if (visitedParents.Contains(parentEntityToken)) { continue; } visitedParents.Add(parentEntityToken); IEnumerable <PermissionType> result = GetInheritedGroupPermissionsTypesRecursivly(parentEntityToken, userGroupPermissionDefinitions, visitedParents).ToList(); parentsPermisstionTypes = parentsPermisstionTypes.Concat(result); } foreach (PermissionType permissionType in parentsPermisstionTypes.Distinct()) { yield return(permissionType); } }
/// <exclude /> public static void SetUserGroupPermissionDefinition(UserGroupPermissionDefinition userGroupPermissionDefinition) { Verify.ArgumentNotNull(userGroupPermissionDefinition, "userGroupPermissionDefinition"); if (userGroupPermissionDefinition.EntityToken is NoSecurityEntityToken) { return; } if (userGroupPermissionDefinition.PermissionTypes.Contains(PermissionType.ClearPermissions) && (userGroupPermissionDefinition.PermissionTypes.Count() > 1)) { throw new ArgumentException(string.Format("The permission type '{0}' may not be used with other permission types", PermissionType.ClearPermissions)); } Verify.That(UserPermissionDefinitionProviderPluginFacade.CanAlterDefinitions, "The user permission definition provider does not support altering user permission defintions"); EntityTokenCacheFacade.ClearCache(); UserGroupPermissionDefinitionProviderPluginFacade.SetUserGroupPermissionDefinition(userGroupPermissionDefinition); }
public void SetUserGroupPermissionDefinition(UserGroupPermissionDefinition userGroupPermissionDefinition) { Guid userGroupId = userGroupPermissionDefinition.UserGroupId; string serializedEntityToken = userGroupPermissionDefinition.SerializedEntityToken; using (TransactionScope transactionScope = TransactionsFacade.CreateNewScope()) { IEnumerable<IUserGroupPermissionDefinition> existingPermissionDefinitions = DataFacade.GetData<IUserGroupPermissionDefinition>() .Where(d => d.UserGroupId == userGroupId) .ToList() .Where(d => userGroupPermissionDefinition.EntityToken.Equals(DeserializeSilent(d.SerializedEntityToken))) .ToList(); DataFacade.Delete(existingPermissionDefinitions); IUserGroupPermissionDefinition definition = DataFacade.BuildNew<IUserGroupPermissionDefinition>(); definition.Id = Guid.NewGuid(); definition.UserGroupId = userGroupId; definition.SerializedEntityToken = serializedEntityToken; DataFacade.AddNew(definition); foreach (PermissionType permissionType in userGroupPermissionDefinition.PermissionTypes) { IUserGroupPermissionDefinitionPermissionType permission = DataFacade.BuildNew<IUserGroupPermissionDefinitionPermissionType>(); permission.Id = Guid.NewGuid(); permission.PermissionTypeName = permissionType.ToString(); permission.UserGroupPermissionDefinitionId = definition.Id; DataFacade.AddNew(permission); } transactionScope.Complete(); } }
/// <exclude /> public static void SetUserGroupPermissionDefinition(UserGroupPermissionDefinition userGroupPermissionDefinition) { Verify.ArgumentNotNull(userGroupPermissionDefinition, "userGroupPermissionDefinition"); if (userGroupPermissionDefinition.EntityToken is NoSecurityEntityToken) return; if (userGroupPermissionDefinition.PermissionTypes.Contains(PermissionType.ClearPermissions) && (userGroupPermissionDefinition.PermissionTypes.Count() > 1)) { throw new ArgumentException(string.Format("The permission type '{0}' may not be used with other permission types", PermissionType.ClearPermissions)); } Verify.That(UserPermissionDefinitionProviderPluginFacade.CanAlterDefinitions, "The user permission definition provider does not support altering user permission defintions"); EntityTokenCacheFacade.ClearCache(); UserGroupPermissionDefinitionProviderPluginFacade.SetUserGroupPermissionDefinition(userGroupPermissionDefinition); }