using System; using System.Collections.Generic; using System.Security.Principal; using System.ComponentModel; namespace Csla.Security { /// /// Maintains a list of allowed and denied /// user roles for a specific property. /// /// [Serializable()] internal class RolesForProperty { private List _readAllowed = new List(); private List _readDenied = new List(); private List _writeAllowed = new List(); private List _writeDenied = new List(); /// /// Returns a List(Of string) containing the list /// of roles allowed read access. /// public List ReadAllowed { get { return _readAllowed; } } /// /// Returns a List(Of string) containing the list /// of roles denied read access. /// public List ReadDenied { get { return _readDenied; } } /// /// Returns a List(Of string) containing the list /// of roles allowed write access. /// public List WriteAllowed { get { return _writeAllowed; } } /// /// Returns a List(Of string) containing the list /// of roles denied write access. /// public List WriteDenied { get { return _writeDenied; } } /// /// Returns if the user is in a role /// explicitly allowed read access. /// /// A /// representing the user. /// if the user is allowed read access. /// public bool IsReadAllowed(IPrincipal principal) { foreach (string role in ReadAllowed) if (principal.IsInRole(role)) return true; return false; } /// /// Returns if the user is in a role /// explicitly denied read access. /// /// A /// representing the user. /// if the user is denied read access. /// public bool IsReadDenied(IPrincipal principal) { foreach (string role in ReadDenied) if (principal.IsInRole(role)) return true; return false; } /// /// Returns if the user is in a role /// explicitly allowed write access. /// /// A /// representing the user. /// if the user is allowed write access. /// public bool IsWriteAllowed(IPrincipal principal) { foreach (string role in WriteAllowed) if (principal.IsInRole(role)) return true; return false; } /// /// Returns if the user is in a role /// explicitly denied write access. /// /// A /// representing the user. /// if the user is denied write access. /// public bool IsWriteDenied(IPrincipal principal) { foreach (string role in WriteDenied) if (principal.IsInRole(role)) return true; return false; } } }