using UserManagement.Data; using UserManagement.Data.Dto; using UserManagement.MediatR.Commands; using MediatR; using Microsoft.AspNetCore.Identity; using System.Threading; using System.Threading.Tasks; using UserManagement.Helper; using Microsoft.Extensions.Logging; namespace UserManagement.MediatR.Handlers { public class ResetPasswordCommandHandler( UserManager userManager, ILogger logger ) : IRequestHandler> { public async Task> Handle(ResetPasswordCommand request, CancellationToken cancellationToken) { var entity = await userManager.FindByEmailAsync(request.UserName); if (entity == null) { logger.LogError("User not Found."); return ServiceResponse.ReturnFailed(404, "User not Found."); } string code = await userManager.GeneratePasswordResetTokenAsync(entity); IdentityResult passwordResult = await userManager.ResetPasswordAsync(entity, code, request.Password); if (!passwordResult.Succeeded) { return ServiceResponse.Return500(); } return ServiceResponse.ReturnSuccess(); } } }