using PnvPanel.Application.Common.Interfaces; using PnvPanel.Application.Common.Messaging; using PnvPanel.Application.Common.Models; using PnvPanel.Domain.Audit; namespace PnvPanel.Application.Admin.Users; public sealed class ResetUserPasswordCommandHandler( IAppDbContext dbContext, IIdentityService identityService, ICurrentUser currentUser ) : ICommandHandler { public async Task Handle( ResetUserPasswordCommand command, CancellationToken cancellationToken ) { var result = await identityService.ResetPasswordAsync( command.UserId, command.NewPassword, cancellationToken ); if (!result.IsSuccess) return result; dbContext.AuditLogs.Add( AuditLog.Create( currentUser.UserId, "UserPasswordReset", "User", command.UserId.ToString(), metadata: null, AuditSource.Web ) ); await dbContext.SaveChangesAsync(cancellationToken); return Result.Success(); } }