public async Task <AuthenticatedUserDto> Handle(AuthenticateUser request, CancellationToken cancellationToken) { AuthenticateUserValidator validator = new AuthenticateUserValidator(); ValidationResult validationResult = await validator.ValidateAsync(request, cancellationToken); if (!validationResult.IsValid) { throw new EntityValidationException(nameof(AuthenticateUser), request, validationResult.Errors); } User user = await _mainDbContext.Users .AsNoTracking() .Where(u => u.Email == request.Email && !u.IsDeleted) .FirstOrDefaultAsync(cancellationToken); if (user.Equals(null)) { throw new InvalidCredentialException(); } string passwordHash = user.Password; bool isPasswordValid = BCrypt.Net.BCrypt.Verify(request.Password, passwordHash); if (!isPasswordValid) { throw new InvalidCredentialException(); } WebToken webToken = await _mediator.Send(new GenerateToken(), cancellationToken); return(new AuthenticatedUserDto { User = _mapper.Map <UserDto>(user), WebToken = webToken, }); }
public override bool IsValid() { ValidationResult = new AuthenticateUserValidator().Validate(this); return(ValidationResult.IsValid); }