using Microsoft.AspNetCore.Identity; using System.Collections.Generic; using System.Linq; using System.Security.Claims; using System.Threading; using System.Threading.Tasks; using zero.Core.Entities; namespace zero.Core.Identity { public partial class RavenRoleStore : IRoleClaimStore where TRole : class, IIdentityUserRole { /// public Task AddClaimAsync(TRole role, Claim claim, CancellationToken cancellationToken = default) { role.Claims.Add(new UserClaim(claim)); return Task.CompletedTask; } /// public Task> GetClaimsAsync(TRole role, CancellationToken cancellationToken = default) { return Task.FromResult((IList)role.Claims.Select(claim => claim.ToClaim()).ToList()); } /// public Task RemoveClaimAsync(TRole role, Claim claim, CancellationToken cancellationToken = default) { UserClaim userClaim = new UserClaim(claim); role.Claims = role.Claims.Except(new List() { userClaim }, new UserClaimComparer()).ToList(); return Task.CompletedTask; } } }