/// <exclude /> public static void SetUserPermissionDefinition(UserPermissionDefinition userPermissionDefinition) { if (userPermissionDefinition == null) { throw new ArgumentNullException("userPermissionDefinition"); } if (userPermissionDefinition.EntityToken is NoSecurityEntityToken) { return; } if (userPermissionDefinition.PermissionTypes.Contains(PermissionType.ClearPermissions) && userPermissionDefinition.PermissionTypes.Count() > 1) { throw new ArgumentException(string.Format("The permission type '{0}' may not be used with other permission types", PermissionType.ClearPermissions)); } if (!UserPermissionDefinitionProviderPluginFacade.CanAlterDefinitions) { throw new InvalidOperationException("The user permission definition provider does not support altering user permission defintions"); } EntityTokenCacheFacade.ClearCache(); UserPermissionDefinitionProviderPluginFacade.SetUserPermissionDefinition(userPermissionDefinition); }
/// <exclude /> public static void RemoveUserPermissionDefinition(UserToken userToken, EntityToken entityToken) { if (userToken == null) { throw new ArgumentNullException("userToken"); } if (entityToken == null) { throw new ArgumentNullException("entityToken"); } if ((entityToken is NoSecurityEntityToken)) { return; } if (!UserPermissionDefinitionProviderPluginFacade.CanAlterDefinitions) { throw new InvalidOperationException("The user permission definition provider does not support altering user permission defintions"); } string serializedEntityToken = EntityTokenSerializer.Serialize(entityToken); EntityTokenCacheFacade.ClearCache(); UserPermissionDefinitionProviderPluginFacade.RemoveUserPermissionDefinition(userToken, serializedEntityToken); }
private void ExpandNextLevel(string userName) { int levelNumber = _levels.Count - 1; if (levelNumber > 1000) { throw new InvalidOperationException($"The entity token '{_levels[0][0].EntityToken}' has more than 1000 levels of parents, this might be an infinite loop"); } _moreLevelsToExpend = false; List <RelationshipGraphNode> nodes = _levels[levelNumber]; if (nodes.Count > 1000) { throw new InvalidOperationException($"The entity token '{_levels[0][0].EntityToken}' has more than 1000 nodes at the level {levelNumber}, this might be an infinite loop"); } foreach (RelationshipGraphNode node in nodes) { if (_searchOption == RelationshipGraphSearchOption.Native || _searchOption == RelationshipGraphSearchOption.Both) { IEnumerable <EntityToken> parentEntityTokens; if (!EntityTokenCacheFacade.GetCachedNativeParents(node.EntityToken, out parentEntityTokens, userName)) { parentEntityTokens = SecurityAncestorFacade.GetParents(node.EntityToken)?.Evaluate(); EntityTokenCacheFacade.AddNativeCache(node.EntityToken, parentEntityTokens); } if (parentEntityTokens != null) { AddNewParentEntityTokens(node, parentEntityTokens, RelationshipGraphNodeType.Entity, levelNumber); } } if (_searchOption == RelationshipGraphSearchOption.Hooked || _searchOption == RelationshipGraphSearchOption.Both) { IEnumerable <EntityToken> parentEntityTokens; if (!EntityTokenCacheFacade.GetCachedHookingParents(node.EntityToken, out parentEntityTokens, userName)) { IEnumerable <EntityToken> auxiliaryParentEntityTokens = AuxiliarySecurityAncestorFacade.GetParents(node.EntityToken); IEnumerable <EntityToken> hookingParentEntityTokens = HookingFacade.GetHookies(node.EntityToken); parentEntityTokens = auxiliaryParentEntityTokens.ConcatOrDefault(hookingParentEntityTokens)?.Evaluate(); EntityTokenCacheFacade.AddHookingCache(node.EntityToken, parentEntityTokens); } if (parentEntityTokens != null) { AddNewParentEntityTokens(node, parentEntityTokens, RelationshipGraphNodeType.Hooking, levelNumber); } } } }
/// <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); }