Auth logic is completed (signin, signup, logout), Added: Middlewares, RequireAuth middleware

This commit is contained in:
2024-12-26 14:44:40 +01:00
parent 01b057986e
commit 4c44dac115
11 changed files with 112 additions and 31 deletions

View File

@ -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";

View File

@ -0,0 +1,12 @@
<?php
class RequireAuth {
public function handle() {
if (!isset($_SESSION['user'])) {
header('Location: /auth/signin');
exit();
}
return true;
}
}