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());
            }
        }