Auth logic is completed (signin, signup, logout), Added: Middlewares, RequireAuth middleware
This commit is contained in:
@ -2,17 +2,40 @@
|
||||
|
||||
class Router {
|
||||
private $routes = [];
|
||||
private $middlewares = [];
|
||||
|
||||
public function add($route, $action) {
|
||||
$this->routes[$route] = $action;
|
||||
/**
|
||||
* Add a route with a specific action and optional middleware
|
||||
*
|
||||
* @param string $route
|
||||
* @param string $action
|
||||
* @param array $middlewares Optional middlewares for this route
|
||||
*/
|
||||
public function add($route, $action, $middlewares = []) {
|
||||
$this->routes[$route] = ['action' => $action, 'middlewares' => $middlewares];
|
||||
}
|
||||
|
||||
/**
|
||||
* Dispatch the current request to the correct route and execute middlewares
|
||||
*/
|
||||
public function dispatch() {
|
||||
$uri = $_SERVER['REQUEST_URI'];
|
||||
$uri = parse_url($uri, PHP_URL_PATH);
|
||||
|
||||
if (array_key_exists($uri, $this->routes)) {
|
||||
$action = $this->routes[$uri];
|
||||
$route = $this->routes[$uri];
|
||||
$middlewares = $route['middlewares'];
|
||||
|
||||
// Execute middlewares
|
||||
foreach ($middlewares as $middleware) {
|
||||
$middlewareInstance = new $middleware();
|
||||
if (!$middlewareInstance->handle()) {
|
||||
return; // Stop execution if middleware fails
|
||||
}
|
||||
}
|
||||
|
||||
// Execute the route's controller and method
|
||||
$action = $route['action'];
|
||||
list($controllerName, $methodName) = explode('@', $action);
|
||||
|
||||
require_once controllers . "{$controllerName}.php";
|
||||
|
12
core/middlewares/RequireAuth.php
Normal file
12
core/middlewares/RequireAuth.php
Normal file
@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
class RequireAuth {
|
||||
public function handle() {
|
||||
if (!isset($_SESSION['user'])) {
|
||||
header('Location: /auth/signin');
|
||||
exit();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user