Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        /// <exclude />
        public static IEnumerable <UserPermissionDefinition> GetUserPermissionDefinitions(string username)
        {
            Verify.ArgumentNotNullOrEmpty(username, "username");

            IEnumerable <UserPermissionDefinition> userPermissionDefinitions = UserPermissionDefinitionProviderPluginFacade.GetPermissionsByUser(username);

            var result = new List <UserPermissionDefinition>();

            foreach (UserPermissionDefinition userPermissionDefinition in userPermissionDefinitions)
            {
                EntityToken entityToken = userPermissionDefinition.EntityToken;
                if (entityToken == null)
                {
                    continue;
                }

                if (!entityToken.IsValid())
                {
                    if (UserPermissionDefinitionProviderPluginFacade.CanAlterDefinitions)
                    {
                        Log.LogWarning("PermissionTypeFacade", "System removing invalid permission setting for user '{0}' because the data entity token could not be validated. Token was '{1}'.", username, userPermissionDefinition.SerializedEntityToken);
                        UserPermissionDefinitionProviderPluginFacade.RemoveUserPermissionDefinition(new UserToken(username), userPermissionDefinition.SerializedEntityToken);
                    }
                    continue;
                }

                result.Add(userPermissionDefinition);
            }

            return(result);
        }