コード例 #1
0
        public bool RevokeRole(IRole role, string username)
        {
            bool isSuccessful = false;

            if (Roles.ContainsKey(role))
            {
                IRoleInstance roleInstance = Roles[role];

                if (roleInstance.AuthorizedUsers.Contains(username, StringComparer.CurrentCultureIgnoreCase))
                {
                    if (role.Equals(Role.sysadmin) && roleInstance.AuthorizedUsers.Count == 1)
                    {
                        throw new SecurityException(ErrorHandling.ErrorCodes.Security.LAST_SYSTEM_USER);
                    }
                    int index = roleInstance.AuthorizedUsers.BinarySearch(username, StringComparer.CurrentCultureIgnoreCase);
                    if (index == -1)
                    {
                        roleInstance.AuthorizedUsers.Sort();
                        index = roleInstance.AuthorizedUsers.BinarySearch(username, StringComparer.CurrentCultureIgnoreCase);
                    }

                    if (index >= 0)
                    {
                        roleInstance.AuthorizedUsers.RemoveAt(index);
                    }

                    isSuccessful = true;
                }
            }
            return(isSuccessful);
        }
コード例 #2
0
 public override void WriteJson(JsonWriter writer, object value, Newtonsoft.Json.JsonSerializer serializer)
 {
     writer.WriteStartObject();
     if (value is IResourceItem)
     {
         IResourceItem resourceItem = value as IResourceItem;
         if (resourceItem != null)
         {
             writer.WritePropertyName("ResourceId");
             serializer.Serialize(writer, resourceItem.ResourceId);
             writer.WritePropertyName("SecurityInformationType");
             serializer.Serialize(writer, resourceItem.SecurityInformationType);
             writer.WritePropertyName("ClusterName");
             serializer.Serialize(writer, resourceItem.ClusterName);
             writer.WritePropertyName("Roles");
             writer.WriteStartArray();
             foreach (var kvp in resourceItem.Roles)
             {
                 writer.WriteStartArray();
                 serializer.Serialize(writer, kvp.Key);
                 serializer.Serialize(writer, kvp.Value);
                 writer.WriteEndArray();
             }
             writer.WriteEndArray();
             writer.WritePropertyName("SubResources");
             writer.WriteStartArray();
             foreach (ResourceId resourceId in resourceItem.SubResources)
             {
                 serializer.Serialize(writer, resourceId);
             }
             writer.WriteEndArray();
         }
     }
     else if (value is IRole)
     {
         IRole role = value as IRole;
         if (role != null)
         {
             writer.WritePropertyName("RoleName");
             serializer.Serialize(writer, role.RoleName);
             writer.WritePropertyName("RoleType");
             serializer.Serialize(writer, role.RoleType);
             writer.WritePropertyName("SecurityInformationType");
             serializer.Serialize(writer, role.SecurityInformationType);
             writer.WritePropertyName("Permissions");
             writer.WriteStartArray();
             foreach (Permission permission in role.Permissions)
             {
                 serializer.Serialize(writer, permission);
             }
             writer.WriteEndArray();
         }
     }
     else if (value is User)
     {
         User user = value as User;
         if (user != null)
         {
             writer.WritePropertyName("UserName");
             serializer.Serialize(writer, user.Username);
             writer.WritePropertyName("SecurityInformationType");
             serializer.Serialize(writer, user.SecurityInformationType);
         }
     }
     else if (value is IRoleInstance)
     {
         IRoleInstance roleInstance = value as IRoleInstance;
         if (roleInstance != null)
         {
             writer.WritePropertyName("SecurityInformationType");
             serializer.Serialize(writer, roleInstance.SecurityInformationType);
             writer.WritePropertyName("AuthorizedUsers");
             writer.WriteStartArray();
             foreach (string user in roleInstance.AuthorizedUsers)
             {
                 serializer.Serialize(writer, user);
             }
             writer.WriteEndArray();
         }
     }
     else if (value is Permission)
     {
         Permission permission = value as Permission;
         if (permission != null)
         {
             writer.WritePropertyName("OperationType");
             serializer.Serialize(writer, permission.OperationType);
             writer.WritePropertyName("ResourceType");
             serializer.Serialize(writer, permission.ResourceType);
             writer.WritePropertyName("SecurityInformationType");
             serializer.Serialize(writer, permission.SecurityInformationType);
         }
     }
     else if (value is ResourceId)
     {
         ResourceId resourceId = value as ResourceId;
         if (resourceId != null)
         {
             writer.WritePropertyName("Name");
             serializer.Serialize(writer, resourceId.Name);
             writer.WritePropertyName("ResourceType");
             serializer.Serialize(writer, resourceId.ResourceType);
             writer.WritePropertyName("SecurityInformationType");
             serializer.Serialize(writer, resourceId.SecurityInformationType);
         }
     }
     writer.WriteEndObject();
 }