public async Task <Unit> Handle(ChangeEmailValidateCommand request, CancellationToken cancellationToken) { _logger.LogInformation($"Se va a validar el cambio de email para el usuario {request.UserId}"); var user = await _userManager.FindByIdAsync(request.UserId); if (user is null) { _logger.LogWarning($"El usuario {request.UserId} no existe en la base de datos"); throw new NotFoundException(nameof(UserManager <ApplicationUser>), nameof(request.UserId)); } var identityResult = await _userManager.ChangeEmailAsync(user, request.NewEmail, request.Code); if (!identityResult.Succeeded) { foreach (var error in identityResult.Errors) { _logger.LogWarning($"Usuario {request.UserId}, error al validar token: {error.Description}"); _validationFailureService.Add(Errors.NonFieldErrors, error.Description); } _validationFailureService.RaiseException(); } _logger.LogInformation($"El usuario {user.Id} ha validado con éxito el cambio de email"); return(Unit.Value); }
public async Task <Unit> Handle(ChangePasswordCommand request, CancellationToken cancellationToken) { _logger.LogInformation($"Usuario {request.Id} va a cambiar el password"); var user = await _userManager.FindByIdAsync(request.Id); if (user is null) { _logger.LogWarning($"Usuario {request.Id} intenta cambiar contraseña y no existe"); throw new NotFoundException(nameof(ApplicationUser), nameof(request.Id)); } // Cambiar contraseña. var changePasswordResult = await _userManager.ChangePasswordAsync(user, request.OldPassword, request.NewPassword); if (!changePasswordResult.Succeeded) { foreach (var error in changePasswordResult.Errors) { _logger.LogWarning($"Usuario {request.Id}, error al cambiar contraseña: {error.Description}"); _validationFailureService.Add(Errors.NonFieldErrors, error.Description); } _validationFailureService.RaiseException(); } var changePasswordViewModel = _mapper.Map <ChangePasswordDto>(user); changePasswordViewModel.SiteName = _webApiConfig.SiteName; await EmailNotifyChangePasswordAsync(changePasswordViewModel); _logger.LogInformation($"El usuario {user.Id} ha cambiado contraseña con éxito"); return(Unit.Value); }