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