|
|
|
<?php
|
|
|
|
|
|
|
|
namespace app\traits;
|
|
|
|
|
|
|
|
use app\models\Token;
|
|
|
|
use app\Repositories\Usuario;
|
|
|
|
use app\shared\Logger;
|
|
|
|
use Slim\Psr7\Request;
|
|
|
|
use Exception;
|
|
|
|
use DateTime;
|
|
|
|
|
|
|
|
trait AuthToken
|
|
|
|
{
|
|
|
|
private static Logger $logger;
|
|
|
|
const LOG_ACTIVE = true;
|
|
|
|
|
|
|
|
public function findToken(Request $request)
|
|
|
|
{
|
|
|
|
$body = json_decode($request->getBody()->getContents(), true);
|
|
|
|
$headers = $request->getHeader('Authorization');
|
|
|
|
self::$logger->debug('body in AuthToken: ' . print_r($body, true) . "\nAuthorization: " . print_r($headers, true), true);
|
|
|
|
$bearerToken = str_replace('Bearer ', '', $headers[0]);
|
|
|
|
|
|
|
|
if (empty($bearerToken)) {
|
|
|
|
throw new Exception('Informe o token.');
|
|
|
|
}
|
|
|
|
|
|
|
|
if (empty($body['org_id'])) {
|
|
|
|
throw new Exception('Informe o org_id.');
|
|
|
|
}
|
|
|
|
|
|
|
|
$tokenEmpresas = Usuario::verifyTokenByOrg($bearerToken, $body['org_id']);
|
|
|
|
self::$logger->debug('tokenEmpresas in AuthToken: ' . print_r($tokenEmpresas, true), true);
|
|
|
|
|
|
|
|
if (empty($tokenEmpresas)) {
|
|
|
|
throw new Exception('Requisicao nao autorizada, por favor verifique o token e a permissao de acesso!');
|
|
|
|
}
|
|
|
|
|
|
|
|
$expiredDate = new DateTime($tokenEmpresas['expired_at']);
|
|
|
|
|
|
|
|
$now = new DateTime();
|
|
|
|
if ($expiredDate < $now) {
|
|
|
|
throw new Exception('Token expirado, realize uma nova autenticacao.');
|
|
|
|
}
|
|
|
|
|
|
|
|
self::$logger->debug("Auth success to user " . $tokenEmpresas['user_id'], true);
|
|
|
|
return $tokenEmpresas;
|
|
|
|
}
|
|
|
|
}
|