public async Task <Unit> Handle(RegisterValidateCommand request, CancellationToken cancellationToken) { _logger.LogInformation($"Se va a validar el registro 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"); var errorMessage = _localizer["El usuario no existe"]; _validationFailureService.AddAndRaiseException(Errors.NonFieldErrors, errorMessage); return(Unit.Value); } var code = HttpUtility.HtmlDecode(request.Code); var confirmEmailResult = await _userManager.ConfirmEmailAsync(user, code); if (!confirmEmailResult.Succeeded) { var message = _localizer["El tiempo de validación ha expirado"]; _logger.LogWarning(message); _validationFailureService.AddAndRaiseException(Errors.NonFieldErrors, message); } user.Id = request.UserId; user.EmailConfirmed = true; await _userManager.UpdateAsync(user); _logger.LogInformation($"Verificación de email para el usuario {user.Id} realizada con éxito"); return(Unit.Value); }
public async Task <CurrentUserDto> Handle(LoginCommand request, CancellationToken cancellationToken) { await _signInManager.SignOutAsync(); await _httpContextAccessor.HttpContext.SignOutAsync(); var user = await GetUserByUserNameOrEmail(request, cancellationToken); if (user.Active is false) { var error = _localizer["La cuenta no esta activa, por favor habla con un administrador"]; _validationFailureService.AddAndRaiseException(Errors.NonFieldErrors, error); } var result = await _signInManager.PasswordSignInAsync( user.UserName, request.Password, request.RememberMe, false); if (!result.Succeeded) { InvalidUserNameOrPassword(request); } var roles = await _userManager.GetRolesAsync(user); var token = _jwtSecurityTokenService.CreateToken(user, roles); var loginCommandVm = _mapper.Map <CurrentUserDto>(user); loginCommandVm.Token = token; _logger.LogInformation($"Se ha identificado con éxito {request.UserName}"); return(loginCommandVm); }
private async Task UserValidationAsync(ApplicationUser applicationUser) { var validUser = await _userValidator.ValidateAsync(_userManager, applicationUser); if (!validUser.Succeeded) { var errorMessage = _localizer["El usuario no es valido"]; _logger.LogWarning(errorMessage); _validationFailureService.Add(nameof(applicationUser.UserName), errorMessage); } // Comprueba si existe un FirstName y LastName iguales en la base de datos. var userExists = _userManager.Users.FirstOrDefault( u => u.FirstName == applicationUser.FirstName && u.LastName == applicationUser.LastName); if (userExists != null) { // Si existe, lanza al excepción para no llegar hacer la consulta ya que daria un 500. var errorMessage = _localizer["Ya existe un usuario con ese nombre y apellidos"]; _validationFailureService.AddAndRaiseException(nameof(applicationUser.FirstName), errorMessage); } }