PABX da Simples IP
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

49 lines
1.5 KiB

<?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;
}
}