diff --git a/src/CellularManagement.Application/Features/Auth/Commands/AuthenticateUser/AuthenticateUserCommandHandler.cs b/src/CellularManagement.Application/Features/Auth/Commands/AuthenticateUser/AuthenticateUserCommandHandler.cs index 272ec5d..00f8f1c 100644 --- a/src/CellularManagement.Application/Features/Auth/Commands/AuthenticateUser/AuthenticateUserCommandHandler.cs +++ b/src/CellularManagement.Application/Features/Auth/Commands/AuthenticateUser/AuthenticateUserCommandHandler.cs @@ -19,6 +19,7 @@ public sealed class AuthenticateUserCommandHandler : IRequestHandler _logger; private readonly IUserRoleRepository _userRoleRepository; + private readonly IRolePermissionRepository _rolePermissionRepository; /// /// 初始化处理器 @@ -27,12 +28,14 @@ public sealed class AuthenticateUserCommandHandler : IRequestHandler userManager, IJwtProvider jwtProvider, ILogger logger, - IUserRoleRepository userRoleRepository) + IUserRoleRepository userRoleRepository, + IRolePermissionRepository rolePermissionRepository) { _userManager = userManager; _jwtProvider = jwtProvider; _logger = logger; _userRoleRepository = userRoleRepository; + _rolePermissionRepository = rolePermissionRepository; } /// @@ -85,6 +88,20 @@ public sealed class AuthenticateUserCommandHandler : IRequestHandler new Claim(ClaimTypes.Role, role))); + // 获取所有角色的权限 + var permissions = new Dictionary(); + foreach (var role in roles) + { + var rolePermissions = await _rolePermissionRepository.GetRolePermissionsWithDetailsAsync(role, cancellationToken); + foreach (var rolePermission in rolePermissions) + { + if (!permissions.ContainsKey(rolePermission.Permission.Code)) + { + permissions[rolePermission.Permission.Code] = true; + } + } + } + // 生成访问令牌 var accessToken = _jwtProvider.GenerateAccessToken(claims); @@ -100,7 +117,8 @@ public sealed class AuthenticateUserCommandHandler : IRequestHandler