public async Task <Response> Authenticate(LoginUserRequest request) { try { var user = await _repository.GetByEmail(request.Email); if (!_hashService.AreEqual(request.Password, user.Hash, user.Salt)) { return(ForbiddenResponse("Email ou senha incorretos")); } var response = new LoginUserResponse(); response.User = _mapper.Map <UserResponse>(user); response.Token = _tokenService.GenerateToken(user); response.ExpiresIn = _tokenService.GetExpirationInSeconds(); return(OkResponse(null, response)); } catch (NullReferenceException) { return(NotFoundResponse("Usuário não encontrado")); } catch (Exception ex) { return(BadRequestResponse(ex.Message)); } }