public ActionResult <ApiResponse <UsuarioQueryResult, Notificacao> > UsuarioLogin([FromBody] LoginUsuarioCommand command)
        {
            try
            {
                if (Request.Headers["ChaveAPI"].ToString() != _ChaveAPI)
                {
                    return(StatusCode(StatusCodes.Status401Unauthorized, new ApiResponse <object, Notificacao>("Acesso negado", new List <Notificacao>()
                    {
                        new Notificacao("Chave da API", "ChaveAPI não corresponde com a chave esperada")
                    })));
                }

                if (command == null)
                {
                    return(StatusCode(StatusCodes.Status400BadRequest, new ApiResponse <object, Notificacao>("Parâmentros inválidos", new List <Notificacao>()
                    {
                        new Notificacao("Parâmetros de entrada", "Parâmetros de entrada estão nulos")
                    })));
                }

                if (!command.ValidarCommand())
                {
                    return(StatusCode(StatusCodes.Status400BadRequest, new ApiResponse <object, Notificacao>("Parâmentros inválidos", command.Notificacoes)));
                }

                var result = _handler.Handler(command);

                if (result.Sucesso)
                {
                    UsuarioQueryResult usuarioQR = (UsuarioQueryResult)result.Dados;

                    string token = _tokenService.GenerateToken(usuarioQR);

                    UsuarioTokenQueryResult usuarioTokenQR = new UsuarioTokenQueryResult()
                    {
                        Id         = usuarioQR.Id,
                        Login      = usuarioQR.Login,
                        Senha      = usuarioQR.Senha,
                        Privilegio = usuarioQR.Privilegio,
                        Token      = token
                    };

                    return(StatusCode(StatusCodes.Status200OK, new ApiResponse <object, Notificacao>(result.Mensagem, usuarioTokenQR)));
                }
                else
                {
                    return(StatusCode(StatusCodes.Status400BadRequest, new ApiResponse <object, Notificacao>(result.Mensagem, result.Erros)));
                }
            }
            catch (Exception e)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, new ApiResponse <object, Notificacao>("Erro", new List <Notificacao>()
                {
                    new Notificacao("Erro", e.Message)
                })));
            }
        }
예제 #2
0
        public ICommandResult UsuarioLogin([FromBody] LogarUsuarioCommand command)
        {
            try
            {
                var result = _handler.Handle(command);

                var tokenJWT = _tokenJWTService.GenerateToken((UsuarioQueryResult)result.Data);

                result.Data = tokenJWT;

                return(result);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }