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.
52 lines
1.7 KiB
52 lines
1.7 KiB
<?php |
|
|
|
namespace app\middleware; |
|
|
|
use Psr\Http\Message\ServerRequestInterface as Request; |
|
use Psr\Http\Server\RequestHandlerInterface as RequestHandler; |
|
use Psr\Http\Message\ResponseInterface; |
|
use Tuupola\Http\Factory\ResponseFactory; |
|
use Exception; |
|
|
|
use app\traits\AuthToken; |
|
use app\shared\Logger; |
|
|
|
class AuthMiddleware |
|
{ |
|
use AuthToken; |
|
|
|
// does constructor works here? |
|
public function __construct() |
|
{ |
|
self::$logger = new Logger('api' . date('Ymd'), self::LOG_ACTIVE); |
|
self::$logger->debug('AuthMiddleware instantiated', true); |
|
} |
|
|
|
public function __invoke(Request $request, RequestHandler $handler): ResponseInterface |
|
{ |
|
try { |
|
self::$logger->debug('Will try to find token', true); |
|
|
|
//returns [user_id, token_id, id_organizacao, token, expired_at] if not found --> throws exception |
|
$orgToken = $this->findToken($request); |
|
|
|
/* // creating array of orgs |
|
$orgs = []; |
|
foreach ($orgToken as $value) { |
|
$orgs[] = $value['id_organizacao']; |
|
} */ |
|
|
|
//$request = $request->withAttribute('orgs', $orgToken['id_organizacao']); |
|
$response = $handler->handle($request); |
|
} catch (Exception $e) { |
|
self::$logger->error('Exception in AuthMiddleware: ' . $e->getMessage(), true); |
|
$fac = new ResponseFactory; |
|
$response = $fac->createResponse(403); |
|
$message = mb_convert_encoding($e->getMessage(), 'ISO8859-1'); |
|
$response->withStatus(403)->withHeader('Content-Type', 'application/json')->getBody()->write( |
|
json_encode(['status' => false, 'data' => ['message' => $message]]) |
|
); |
|
} |
|
return $response; |
|
} |
|
}
|
|
|