public async Task <Unit> Handle(RecoveryPasswordValidateCommand request, CancellationToken cancellationToken) { _logger.LogInformation($"Se va a cambiar la contraseña 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(ApplicationUser), nameof(ApplicationUser.Id)); } var code = request.Code.Replace(" ", "+"); var resetResult = await _userManager.ResetPasswordAsync(user, code, request.Password); if (!resetResult.Succeeded) { foreach (var error in resetResult.Errors) { _logger.LogWarning( $"Error al validar contraseña. Code: {error.Code}, Description: {error.Description}"); _validationFailureService.Add(nameof(error.Code), error.Description); } _validationFailureService.RaiseExceptionIfExistsErrors(); } _logger.LogInformation($"El usuario {user.Id} ha restablecido la contraseña con éxito"); return(Unit.Value); }
public async Task <ApplicationUser> CreateUser(ApplicationUser applicationUser, string password) { await UserValidationAsync(applicationUser); await PasswordValidationAsync(applicationUser, password); await UserCreateAsync(applicationUser, password); _validationFailureService.RaiseExceptionIfExistsErrors(); return(applicationUser); }
private async Task ValidateDataIfExists(UpdateUserCommand request) { _logger.LogInformation($"Comprobar si el {nameof(request.UserName)} existe en la base de datos."); var user = await _userManager.Users.AnyAsync(u => u.UserName.ToLower() == request.UserName.ToLower() && u.Id != request.Id); if (user) { _validationFailureService.Add(nameof(request.UserName), _localizer["Nombre de usuario ya existe"]); } _logger.LogInformation( $"Comprobar si el {nameof(request.FirstName)} y {nameof(request.LastName)} existe en la base de datos."); user = await _userManager.Users.AnyAsync(u => u.FirstName.ToLower() == request.FirstName.ToLower() && u.LastName.ToLower() == request.LastName.ToLower() && u.Id != request.Id); if (user) { var message = _localizer["Ya existe un usuario con ese nombre y apellidos"]; _validationFailureService.Add(nameof(request.FirstName), message); _validationFailureService.Add(nameof(request.LastName), message); } _logger.LogInformation($"Comprobar si el {nameof(request.Email)} existe en la base de datos."); user = await _userManager.Users.AnyAsync(u => u.Email.ToLower() == request.Email.ToLower() && u.Id != request.Id); if (user) { var message = _localizer["El existe un usuario con ese correo electrónico"]; _validationFailureService.Add(nameof(request.Email), message); } _validationFailureService.RaiseExceptionIfExistsErrors(); }