Como adicionar/cadastrar novas URL's aceitaveis nas requisicoes REST do magento 2

De Tek-System Wiki
Ir para navegação Ir para pesquisar

Vá até o arquivo php:

vendor/magento/module-webapi/controller/rest/requestValidator.php

A função resposável pela validação é checkPermissions().

    /**
     * Perform authentication and authorization.
     *
     * @throws \Magento\Framework\Exception\AuthorizationException
     * @return void
     */
    private function checkPermissions()
    {
        $route = $this->router->match($this->request);
        if (!$this->authorization->isAllowed($route->getAclResources())) { // SE NAO ESTA AUTORIZADO
            $params = ['resources' => implode(', ', $route->getAclResources())];
            throw new AuthorizationException(
                __(AuthorizationException::NOT_AUTHORIZED, $params)
            );
        }else{ // SE ESTA AUTORIZADO
            $naoAutorizado = [ "Não autorizado" => "Voce nao tem autorizacao para fazer modificacoes na url"];
            $requisicaoCompleta = $this->request->getServer()->HTTP_HOST.$this->request->getServer()->REQUEST_URI;
            // SE O USUARIO TEM ACESSO A ESTE WEBSITE
            // INSERIR CONDICIONAIS AQUIs      
            throw new AuthorizationException(
                __(AuthorizationException::NOT_AUTHORIZED, $this->request->getServer())
                //__(AuthorizationException::NOT_AUTHORIZED, $this->request->getServer()->REQUEST_URI)
            );
        }
    }
 


As condicionais devem ser adiciondas dentro do bloco ELSE.

Nota: Se precisar ver toda a requisição de acesso feita pela REST API, adicione a função dentro do throw para que você possa vê-lo no postman!

   $this->request->getServer()

Você deve ver algo como o a seguir, tentando acessar qualquer requição COM AUTORIZAÇÃO

    {
    "message": "Consumer is not authorized to access %resources",
    "parameters": [
        {
            "REDIRECT_HTTP_AUTHORIZATION": "Bearer cd2xrjeuxheqxh8254h4wbiuu3atne10",
            "REDIRECT_STATUS": "200",
            "HTTP_AUTHORIZATION": "Bearer cd2xrjeuxheqxh8254h4wbiuu3atne10",
            "HTTP_HOST": "127.0.0.1",
            "HTTP_X_REAL_IP": "172.23.0.1",
            "HTTP_X_FORWARDED_FOR": "172.23.0.1",
            "HTTP_CONNECTION": "close",
            "HTTP_CACHE_CONTROL": "no-cache",
            "HTTP_POSTMAN_TOKEN": "92ffad1f-0ae5-452f-ad0a-be0ddd84698d",
            "HTTP_USER_AGENT": "PostmanRuntime/7.1.1",
            "HTTP_ACCEPT": "*/*",
            "HTTP_COOKIE": "PHPSESSID=cb77079e25324ae5597319a9998db1f1",
            "HTTP_ACCEPT_ENCODING": "gzip, deflate",
            "PATH": "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "SERVER_SIGNATURE": "<address>Apache/2.4.10 (Debian) Server at 127.0.0.1 Port 80</address>\n",
            "SERVER_SOFTWARE": "Apache/2.4.10 (Debian)",
            "SERVER_NAME": "127.0.0.1",
            "SERVER_ADDR": "172.23.0.2",
            "SERVER_PORT": "80",
            "REMOTE_ADDR": "172.23.0.4",
            "DOCUMENT_ROOT": "/var/www/html",
            "REQUEST_SCHEME": "http",
            "CONTEXT_PREFIX": "",
            "CONTEXT_DOCUMENT_ROOT": "/var/www/html",
            "SERVER_ADMIN": "webmaster@localhost",
            "SCRIPT_FILENAME": "/var/www/html/index.php",
            "REMOTE_PORT": "53272",
            "REDIRECT_QUERY_STRING": "searchCriteria=",
            "REDIRECT_URL": "/rest/ts/V1/orders",
            "GATEWAY_INTERFACE": "CGI/1.1",
            "SERVER_PROTOCOL": "HTTP/1.0",
            "REQUEST_METHOD": "GET",
            "QUERY_STRING": "searchCriteria=",
            "REQUEST_URI": "/rest/ts/V1/orders?searchCriteria=",
            "SCRIPT_NAME": "/index.php",
            "PHP_SELF": "/index.php",
            "REQUEST_TIME_FLOAT": 1516874099.803,
            "REQUEST_TIME": 1516874099,
            "argv": [
                "searchCriteria="
            ],
            "argc": 1
        }
    ]
    }