public async Task <IActionResult> Login([FromBody] LoginUserRequest loginUser) { try { _log.LogInformation("Autenticando usuário: {@loginUser}", loginUser); var validator = await new LoginUserValidator().ValidateAsync(loginUser); if (!validator.IsValid) { _log.LogError("Erro durante a validação dos dados {@newUser}", loginUser); return(BadRequest(validator.Errors)); } var validateLoginResult = await _userApplication.GenerateAccessToken(new GenerateAccessTokenFilter(loginUser.Email, loginUser.Password)); if (!validateLoginResult.Authorized) { _log.LogWarning("Usuário não autorizado: {@loginUser}", loginUser); return(Unauthorized()); } //TODO: Criar user result, pq está retornando o objeto de dominio var user = validateLoginResult.User; return(Ok(new { token = validateLoginResult.Token, user })); } catch (Exception ex) { _log.LogError(ex, "Falha ao autenticar usuário: {@loginUser}", loginUser); return(BadRequest()); } }