| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- using Abp.Dependency;
- using Abp.Domain.Uow;
- using Abp.Runtime.Security;
- using Microsoft.AspNetCore.Identity;
- using Microsoft.Extensions.Options;
- using System.Security.Claims;
- using VberZero.Authorization.Roles;
- using VberZero.Authorization.Users;
- using VberZero.BaseSystem.Roles;
- using VberZero.BaseSystem.Users;
- using VberZero.Tools.StringModel;
- namespace VberZero.Authorization;
- public class VzUserClaimsPrincipalFactory : UserClaimsPrincipalFactory<User, Role>, ITransientDependency
- {
- private readonly IUnitOfWorkManager _unitOfWorkManager;
- public VzUserClaimsPrincipalFactory(
- VzUserManager userManager,
- VzRoleManager roleManager,
- IOptions<IdentityOptions> optionsAccessor,
- IUnitOfWorkManager unitOfWorkManager) : base(userManager, roleManager, optionsAccessor)
- {
- _unitOfWorkManager = unitOfWorkManager;
- }
- [UnitOfWork]
- protected override Task<ClaimsIdentity> GenerateClaimsAsync(User user)
- {
- var claims = new List<Claim>
- {
- new Claim(VzClaimTypes.UserId, user.Id + ""),
- new Claim(VzClaimTypes.RealName, user.FullName),
- new Claim(VzClaimTypes.UserName, user.UserName),
- new Claim(VzClaimTypes.UserType, user.UserType.ToStr()),
- new Claim(VzClaimTypes.AccountType, user.AccountType.ToStr()),
- new Claim(VzClaimTypes.AccountNo, user.AccountNo ?? ""),
- };
- var claimsIdentity = new ClaimsIdentity(claims, IdentityConstants.ApplicationScheme);
- return Task.FromResult(claimsIdentity);
- }
- public override async Task<ClaimsPrincipal> CreateAsync(User user)
- {
- return await _unitOfWorkManager.WithUnitOfWorkAsync(async () =>
- {
- var principal = await base.CreateAsync(user);
- if (user.TenantId.HasValue)
- {
- principal.Identities.First().AddClaim(new Claim(AbpClaimTypes.TenantId, user.TenantId.ToString() ?? string.Empty));
- }
- return principal;
- });
- }
- }
|