using MediatR; using TakeoutSaaS.Application.Identity.Contracts; using TakeoutSaaS.Application.Identity.Queries; using TakeoutSaaS.Domain.Identity.Repositories; using TakeoutSaaS.Shared.Abstractions.Tenancy; namespace TakeoutSaaS.Application.Identity.Handlers; /// /// 按用户 ID 获取权限概览处理器。 /// public sealed class GetUserPermissionsQueryHandler( IIdentityUserRepository identityUserRepository, ITenantProvider tenantProvider) : IRequestHandler { private readonly IIdentityUserRepository _identityUserRepository = identityUserRepository; private readonly ITenantProvider _tenantProvider = tenantProvider; /// public async Task Handle(GetUserPermissionsQuery request, CancellationToken cancellationToken) { var tenantId = _tenantProvider.GetCurrentTenantId(); var user = await _identityUserRepository.FindByIdAsync(request.UserId, cancellationToken); if (user == null || user.TenantId != tenantId) { return null; } return new UserPermissionDto { UserId = user.Id, TenantId = user.TenantId, MerchantId = user.MerchantId, Account = user.Account, DisplayName = user.DisplayName, Roles = user.Roles, Permissions = user.Permissions, CreatedAt = user.CreatedAt }; } }