ln.identities/RoleAssignment.cs

47 lines
1.7 KiB
C#
Raw Normal View History

2019-11-15 13:49:21 +01:00
using System;
namespace ln.identities
{
public class RoleAssignment
{
2019-11-19 11:37:33 +01:00
IIdentityProvider identityProvider;
public IIdentityProvider IdentityProvider => identityProvider;
2019-11-18 08:56:11 +01:00
2019-11-19 11:37:33 +01:00
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()
2019-11-15 13:49:21 +01:00
{
2019-11-19 11:37:33 +01:00
return EffectiveIdentity.GetHashCode() ^ Role.GetHashCode();
2019-11-15 13:49:21 +01:00
}
2019-11-19 11:37:33 +01:00
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);
}
2019-11-15 13:49:21 +01:00
}
}