using System.Security.Claims;
using Dpz.Core.Public.ViewModel;
using Microsoft.AspNetCore.Identity;
using Microsoft.Extensions.Options;

namespace Dpz.Core.Web.Jobs.Security;

public class VmUserInfoClaimsPrincipalFactory(
    UserManager<VmUserInfo> userManager,
    IOptions<IdentityOptions> optionsAccessor
) : UserClaimsPrincipalFactory<VmUserInfo>(userManager, optionsAccessor)
{
    protected override async Task<ClaimsIdentity> GenerateClaimsAsync(VmUserInfo user)
    {
        var principal = await base.GenerateClaimsAsync(user);
        if (user.Permissions != null)
        {
            principal.AddClaim(new Claim("Permission", user.Permissions.Value.ToString()));
        }
        principal.AddClaim(new Claim("displayName", user.Name));

        return principal;
    }
}
评论加载中...