47 lines
1.7 KiB
C#
47 lines
1.7 KiB
C#
using System;
|
|
namespace ln.identities
|
|
{
|
|
public class RoleAssignment
|
|
{
|
|
IIdentityProvider identityProvider;
|
|
public IIdentityProvider IdentityProvider => identityProvider;
|
|
|
|
Guid identityUniqueID;
|
|
Guid effectiveIdentityUniqueID;
|
|
|
|
public Identity Identity => IdentityProvider.GetIdentity(identityUniqueID); // Identity this Role is assigned to
|
|
public Identity EffectiveIdentity => IdentityProvider.GetIdentity(effectiveIdentityUniqueID); // Identity for that this Role is valid
|
|
public Role Role { get; } // Role that is assigned
|
|
|
|
private RoleAssignment(IIdentityProvider identityProvider)
|
|
{
|
|
this.identityProvider = identityProvider;
|
|
}
|
|
|
|
public RoleAssignment(IIdentityProvider identityProvider,Identity identity,Identity effectiveIdentity,Role role)
|
|
:this(identityProvider)
|
|
{
|
|
identityUniqueID = identity.UniqueID;
|
|
effectiveIdentityUniqueID = effectiveIdentity.UniqueID;
|
|
Role = role;
|
|
}
|
|
|
|
public override int GetHashCode()
|
|
{
|
|
return EffectiveIdentity.GetHashCode() ^ Role.GetHashCode();
|
|
}
|
|
|
|
public override bool Equals(object obj)
|
|
{
|
|
return (obj is RoleAssignment you) &&
|
|
(identityUniqueID.Equals(you.identityUniqueID) && effectiveIdentityUniqueID.Equals(you.effectiveIdentityUniqueID) && Role.Equals(you.Role));
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return string.Format("[RoleAssigment Identity={0} EffectiveIdentity={1} Role={2}]",Identity.IdentityName,EffectiveIdentity.IdentityName,Role);
|
|
}
|
|
|
|
}
|
|
}
|