コード例 #1
0
        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));
            }
        }