mirror of
https://github.com/skipperbent/simple-php-router.git
synced 2026-07-11 13:22:14 +00:00
@@ -5,7 +5,7 @@ use Pecee\CsrfToken;
|
|||||||
use Pecee\Exception\TokenMismatchException;
|
use Pecee\Exception\TokenMismatchException;
|
||||||
use Pecee\Http\Request;
|
use Pecee\Http\Request;
|
||||||
|
|
||||||
class BaseCsrfVerifier extends Middleware {
|
class BaseCsrfVerifier implements IMiddleware {
|
||||||
|
|
||||||
const POST_KEY = 'csrf-token';
|
const POST_KEY = 'csrf-token';
|
||||||
const HEADER_KEY = 'X-CSRF-TOKEN';
|
const HEADER_KEY = 'X-CSRF-TOKEN';
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
<?php
|
||||||
|
namespace Pecee\Http\Middleware;
|
||||||
|
|
||||||
|
use Pecee\Http\Request;
|
||||||
|
|
||||||
|
interface IMiddleware {
|
||||||
|
public function handle(Request $request);
|
||||||
|
}
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace Pecee\Http\Middleware;
|
|
||||||
|
|
||||||
use Pecee\Http\Request;
|
|
||||||
use Pecee\SimpleRouter\RouterEntry;
|
|
||||||
|
|
||||||
abstract class Middleware
|
|
||||||
{
|
|
||||||
abstract function handle(Request $request);
|
|
||||||
}
|
|
||||||
@@ -253,7 +253,7 @@ class RouterBase {
|
|||||||
throw new \InvalidArgumentException('Invalid type for getParams. Must be array or null');
|
throw new \InvalidArgumentException('Invalid type for getParams. Must be array or null');
|
||||||
}
|
}
|
||||||
|
|
||||||
if($controller === null && $parameters === null) {
|
if($controller === null && $parameters === null && $this->loadedRoute !== null) {
|
||||||
return $this->processUrl($this->loadedRoute, null, $getParams);
|
return $this->processUrl($this->loadedRoute, null, $getParams);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,29 @@ class RouterController extends RouterEntry {
|
|||||||
$this->controller = $controller;
|
$this->controller = $controller;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function renderRoute(Request $request) {
|
||||||
|
if(is_object($this->getCallback()) && is_callable($this->getCallback())) {
|
||||||
|
|
||||||
|
// When the callback is a function
|
||||||
|
call_user_func_array($this->getCallback(), $this->getParameters());
|
||||||
|
} else {
|
||||||
|
// When the callback is a method
|
||||||
|
$controller = explode('@', $this->getCallback());
|
||||||
|
$className = $this->getNamespace() . '\\' . $controller[0];
|
||||||
|
|
||||||
|
$class = $this->loadClass($className);
|
||||||
|
$method = $request->getMethod() . ucfirst($controller[1]);
|
||||||
|
|
||||||
|
if (!method_exists($class, $method)) {
|
||||||
|
throw new RouterException(sprintf('Method %s does not exist in class %s', $method, $className), 404);
|
||||||
|
}
|
||||||
|
|
||||||
|
call_user_func_array(array($class, $method), $this->getParameters());
|
||||||
|
|
||||||
|
return $class;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function matchRoute(Request $request) {
|
public function matchRoute(Request $request) {
|
||||||
$url = parse_url($request->getUri());
|
$url = parse_url($request->getUri());
|
||||||
$url = rtrim($url['path'], '/') . '/';
|
$url = rtrim($url['path'], '/') . '/';
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
namespace Pecee\SimpleRouter;
|
namespace Pecee\SimpleRouter;
|
||||||
|
|
||||||
use Pecee\Http\Middleware\Middleware;
|
use Pecee\Http\Middleware\IMiddleware;
|
||||||
use Pecee\Http\Request;
|
use Pecee\Http\Request;
|
||||||
|
|
||||||
abstract class RouterEntry {
|
abstract class RouterEntry {
|
||||||
@@ -208,7 +208,7 @@ abstract class RouterEntry {
|
|||||||
public function setSettings($settings) {
|
public function setSettings($settings) {
|
||||||
$this->settings = $settings;
|
$this->settings = $settings;
|
||||||
|
|
||||||
if($settings['prefix']) {
|
if(isset($settings['prefix'])) {
|
||||||
$this->setPrefix($settings['prefix']);
|
$this->setPrefix($settings['prefix']);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -246,7 +246,7 @@ abstract class RouterEntry {
|
|||||||
public function loadMiddleware(Request $request) {
|
public function loadMiddleware(Request $request) {
|
||||||
if($this->getMiddleware()) {
|
if($this->getMiddleware()) {
|
||||||
$middleware = $this->loadClass($this->getMiddleware());
|
$middleware = $this->loadClass($this->getMiddleware());
|
||||||
if (!($middleware instanceof Middleware)) {
|
if (!($middleware instanceof IMiddleware)) {
|
||||||
throw new RouterException($this->getMiddleware() . ' must be instance of Middleware');
|
throw new RouterException($this->getMiddleware() . ' must be instance of Middleware');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ class RouterGroup extends RouterEntry {
|
|||||||
public function renderRoute(Request $request) {
|
public function renderRoute(Request $request) {
|
||||||
// Check if request method is allowed
|
// Check if request method is allowed
|
||||||
|
|
||||||
if(strtolower($request->getUri()) == strtolower($this->prefix) || stripos($request->getUri(), $this->prefix) === 0) {
|
if(trim($this->prefix) === '' || strtolower($request->getUri()) == strtolower($this->prefix) || stripos($request->getUri(), $this->prefix) === 0) {
|
||||||
|
|
||||||
$hasAccess = (!$this->method);
|
$hasAccess = (!$this->method);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user