You've already forked Php-Template
feat/cli-framework #12
@@ -18,48 +18,35 @@ use Lcobucci\JWT\Validation\Constraint\SignedWith;
|
|||||||
use Lcobucci\JWT\Validation\Constraint\StrictValidAt;
|
use Lcobucci\JWT\Validation\Constraint\StrictValidAt;
|
||||||
use Lcobucci\JWT\Validation\RequiredConstraintsViolated;
|
use Lcobucci\JWT\Validation\RequiredConstraintsViolated;
|
||||||
use League\Route\Dispatcher;
|
use League\Route\Dispatcher;
|
||||||
use League\Route\Route;
|
|
||||||
use Psr\Http\Message\ResponseInterface;
|
use Psr\Http\Message\ResponseInterface;
|
||||||
use Psr\Http\Message\ServerRequestInterface;
|
use Psr\Http\Message\ServerRequestInterface;
|
||||||
use Psr\Http\Server\MiddlewareInterface;
|
|
||||||
use Psr\Http\Server\RequestHandlerInterface;
|
use Psr\Http\Server\RequestHandlerInterface;
|
||||||
use Siteworxpro\App\Annotations\Guards\Jwt;
|
use Siteworxpro\App\Annotations\Guards\Jwt;
|
||||||
|
use Siteworxpro\App\Controllers\Controller;
|
||||||
use Siteworxpro\App\Http\JsonResponseFactory;
|
use Siteworxpro\App\Http\JsonResponseFactory;
|
||||||
use Siteworxpro\App\Services\Facades\Config;
|
use Siteworxpro\App\Services\Facades\Config;
|
||||||
use Siteworxpro\HttpStatus\CodesEnum;
|
use Siteworxpro\HttpStatus\CodesEnum;
|
||||||
|
|
||||||
class JwtMiddleware implements MiddlewareInterface
|
class JwtMiddleware extends Middleware
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @throws \JsonException
|
* @throws \JsonException
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public function process(ServerRequestInterface $request, RequestHandlerInterface|Dispatcher $handler): ResponseInterface
|
public function process(
|
||||||
{
|
ServerRequestInterface $request,
|
||||||
|
RequestHandlerInterface|Dispatcher $handler
|
||||||
|
): ResponseInterface {
|
||||||
|
|
||||||
if (!$handler instanceof Dispatcher) {
|
$callable = $this->extractRouteCallable($request, $handler);
|
||||||
|
if ($callable === null) {
|
||||||
return $handler->handle($request);
|
return $handler->handle($request);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @var Route | null $lastSegment */
|
/** @var $class Controller */
|
||||||
$lastSegment = array_last($handler->getMiddlewareStack());
|
|
||||||
|
|
||||||
if ($lastSegment === null) {
|
|
||||||
return $handler->handle($request);
|
|
||||||
}
|
|
||||||
|
|
||||||
$callable = $lastSegment->getCallable();
|
|
||||||
$class = null;
|
|
||||||
$method = null;
|
|
||||||
|
|
||||||
if (is_array($callable) && count($callable) === 2) {
|
|
||||||
[$class, $method] = $callable;
|
[$class, $method] = $callable;
|
||||||
} elseif (is_string($callable)) {
|
|
||||||
// Handle the case where the callable is a string (e.g., 'ClassName::methodName')
|
|
||||||
[$class, $method] = explode('::', $callable);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (class_exists($class)) {
|
if (class_exists($class::class)) {
|
||||||
$reflectionClass = new \ReflectionClass($class);
|
$reflectionClass = new \ReflectionClass($class);
|
||||||
|
|
||||||
if ($reflectionClass->hasMethod($method)) {
|
if ($reflectionClass->hasMethod($method)) {
|
||||||
|
|||||||
41
src/Http/Middleware/Middleware.php
Normal file
41
src/Http/Middleware/Middleware.php
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Siteworxpro\App\Http\Middleware;
|
||||||
|
|
||||||
|
use League\Route\Dispatcher;
|
||||||
|
use League\Route\Route;
|
||||||
|
use Psr\Http\Server\MiddlewareInterface;
|
||||||
|
use Psr\Http\Server\RequestHandlerInterface;
|
||||||
|
|
||||||
|
abstract class Middleware implements MiddlewareInterface
|
||||||
|
{
|
||||||
|
|
||||||
|
protected function extractRouteCallable($request, RequestHandlerInterface | Dispatcher $handler): array|null
|
||||||
|
{
|
||||||
|
if (!$handler instanceof Dispatcher) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @var Route | null $lastSegment */
|
||||||
|
$lastSegment = array_last($handler->getMiddlewareStack());
|
||||||
|
|
||||||
|
if ($lastSegment === null) {
|
||||||
|
return $handler->handle($request);
|
||||||
|
}
|
||||||
|
|
||||||
|
$callable = $lastSegment->getCallable();
|
||||||
|
$class = null;
|
||||||
|
$method = null;
|
||||||
|
|
||||||
|
if (is_array($callable) && count($callable) === 2) {
|
||||||
|
[$class, $method] = $callable;
|
||||||
|
} elseif (is_string($callable)) {
|
||||||
|
// Handle the case where the callable is a string (e.g., 'ClassName::methodName')
|
||||||
|
[$class, $method] = explode('::', $callable);
|
||||||
|
}
|
||||||
|
|
||||||
|
return [$class, $method];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,45 +5,32 @@ declare(strict_types=1);
|
|||||||
namespace Siteworxpro\App\Http\Middleware;
|
namespace Siteworxpro\App\Http\Middleware;
|
||||||
|
|
||||||
use League\Route\Dispatcher;
|
use League\Route\Dispatcher;
|
||||||
use League\Route\Route;
|
|
||||||
use Psr\Http\Message\ResponseInterface;
|
use Psr\Http\Message\ResponseInterface;
|
||||||
use Psr\Http\Message\ServerRequestInterface;
|
use Psr\Http\Message\ServerRequestInterface;
|
||||||
use Psr\Http\Server\MiddlewareInterface;
|
|
||||||
use Psr\Http\Server\RequestHandlerInterface;
|
use Psr\Http\Server\RequestHandlerInterface;
|
||||||
use Siteworxpro\App\Annotations\Guards\Scope;
|
use Siteworxpro\App\Annotations\Guards\Scope;
|
||||||
|
use Siteworxpro\App\Controllers\Controller;
|
||||||
use Siteworxpro\App\Http\JsonResponseFactory;
|
use Siteworxpro\App\Http\JsonResponseFactory;
|
||||||
use Siteworxpro\HttpStatus\CodesEnum;
|
use Siteworxpro\HttpStatus\CodesEnum;
|
||||||
|
|
||||||
class ScopeMiddleware implements MiddlewareInterface
|
class ScopeMiddleware extends Middleware
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @throws \JsonException
|
* @throws \JsonException
|
||||||
*/
|
*/
|
||||||
public function process(ServerRequestInterface $request, RequestHandlerInterface | Dispatcher $handler): ResponseInterface
|
public function process(
|
||||||
{
|
ServerRequestInterface $request,
|
||||||
if (!$handler instanceof Dispatcher) {
|
RequestHandlerInterface | Dispatcher $handler
|
||||||
|
): ResponseInterface {
|
||||||
|
$callable = $this->extractRouteCallable($request, $handler);
|
||||||
|
if ($callable === null) {
|
||||||
return $handler->handle($request);
|
return $handler->handle($request);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @var Route | null $lastSegment */
|
/** @var $class Controller */
|
||||||
$lastSegment = array_last($handler->getMiddlewareStack());
|
|
||||||
|
|
||||||
if ($lastSegment === null) {
|
|
||||||
return $handler->handle($request);
|
|
||||||
}
|
|
||||||
|
|
||||||
$callable = $lastSegment->getCallable();
|
|
||||||
$class = null;
|
|
||||||
$method = null;
|
|
||||||
|
|
||||||
if (is_array($callable) && count($callable) === 2) {
|
|
||||||
[$class, $method] = $callable;
|
[$class, $method] = $callable;
|
||||||
} elseif (is_string($callable)) {
|
|
||||||
// Handle the case where the callable is a string (e.g., 'ClassName::methodName')
|
|
||||||
[$class, $method] = explode('::', $callable);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (class_exists($class)) {
|
if (class_exists($class::class)) {
|
||||||
$reflectionClass = new \ReflectionClass($class);
|
$reflectionClass = new \ReflectionClass($class);
|
||||||
if ($reflectionClass->hasMethod($method)) {
|
if ($reflectionClass->hasMethod($method)) {
|
||||||
$reflectionMethod = $reflectionClass->getMethod($method);
|
$reflectionMethod = $reflectionClass->getMethod($method);
|
||||||
|
|||||||
Reference in New Issue
Block a user