forked from SimplesIP/pabx-app
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
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; |
|
} |
|
}
|
|
|