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;
|
|
}
|
|
}
|
|
} |