49 lines
1.8 KiB
C#
49 lines
1.8 KiB
C#
using System.Collections.Generic;
|
|
using System.Text;
|
|
using ln.http.router;
|
|
|
|
namespace ln.http
|
|
{
|
|
public class HttpPrincipal
|
|
{
|
|
public string UniqueId { get; set; }
|
|
public string Username { get; set; }
|
|
|
|
public HttpPrincipal AuthenticatedPrincipal { get; set; }
|
|
|
|
private Dictionary<string, HttpAccessRights> permissions = new Dictionary<string, HttpAccessRights>();
|
|
public IEnumerable<KeyValuePair<string, HttpAccessRights>> Permissions => permissions;
|
|
|
|
public void AddPermission(string roleName, HttpAccessRights accessRights)
|
|
{
|
|
if (permissions.TryGetValue(roleName, out HttpAccessRights roleAccessFlags))
|
|
{
|
|
roleAccessFlags |= accessRights;
|
|
permissions[roleName] = roleAccessFlags;
|
|
}
|
|
else
|
|
{
|
|
permissions.Add(roleName, accessRights);
|
|
}
|
|
}
|
|
public void RemovePermission(string roleName, HttpAccessRights accessRights)
|
|
{
|
|
if (permissions.TryGetValue(roleName, out HttpAccessRights roleAccessFlags))
|
|
{
|
|
roleAccessFlags &= ~accessRights;
|
|
permissions[roleName] = roleAccessFlags;
|
|
}
|
|
}
|
|
public bool HasPermission(string roleName, HttpAccessRights accessRights) =>
|
|
permissions.TryGetValue(roleName, out HttpAccessRights roleAccessFlags) &&
|
|
((roleAccessFlags & accessRights) == accessRights);
|
|
|
|
public override string ToString()
|
|
{
|
|
if (AuthenticatedPrincipal is null)
|
|
return string.Format("{0}[{1}]", Username, UniqueId);
|
|
else
|
|
return string.Format("{2}=>{0}[{1}]", Username, UniqueId, AuthenticatedPrincipal.ToString());
|
|
}
|
|
}
|
|
} |