abschluss
This commit is contained in:
@ -1,11 +1,23 @@
|
||||
<?php
|
||||
namespace Blog\Middleware;
|
||||
|
||||
use Blog\Middleware\middlewareInterface;
|
||||
use Blog\Http\request;
|
||||
use Blog\Http\response;
|
||||
use Blog\Middleware\MiddlewareInterface;
|
||||
use Blog\Http\Request;
|
||||
use Blog\Http\Response;
|
||||
|
||||
/**
|
||||
* Middleware zur Authentifizierung und CSRF-Prüfung.
|
||||
*
|
||||
* Prüft, ob ein Benutzer eingeloggt ist und ob ein gültiges CSRF-Token vorliegt.
|
||||
*/
|
||||
class AuthMiddleware implements MiddlewareInterface {
|
||||
/**
|
||||
* Führt die Authentifizierungs- und CSRF-Prüfung durch.
|
||||
*
|
||||
* @param Request $request Das aktuelle Request-Objekt
|
||||
* @param Response $response Das aktuelle Response-Objekt
|
||||
* @return bool true, wenn die Anfrage fortgesetzt werden darf, sonst false
|
||||
*/
|
||||
public function handle(Request $request, Response $response): bool {
|
||||
if(!isset($_SESSION['user'])) {
|
||||
$response
|
||||
@ -28,11 +40,22 @@ class AuthMiddleware implements MiddlewareInterface {
|
||||
return true;
|
||||
}
|
||||
|
||||
private function validateCSRFToken(Request $request): bool {
|
||||
/**
|
||||
* Prüft, ob das CSRF-Token gültig ist.
|
||||
*
|
||||
* @param Request $request Das aktuelle Request-Objekt
|
||||
* @return bool true, wenn das Token gültig ist, sonst false
|
||||
*/
|
||||
public static function validateCSRFToken(Request $request): bool {
|
||||
$token = $request->getPost('_csrf_token') ?? '';
|
||||
return hash_equals($_SESSION['_csrf_token'] ?? '', $token);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generiert und gibt ein CSRF-Token zurück.
|
||||
*
|
||||
* @return string Das generierte oder vorhandene CSRF-Token
|
||||
*/
|
||||
public static function generateCSRFToken(): string {
|
||||
if(!isset($_SESSION['_csrf_token'])) {
|
||||
$_SESSION['_csrf_token'] = bin2hex(random_bytes(32));
|
21
app/Middleware/MiddlewareInterface.php
Normal file
21
app/Middleware/MiddlewareInterface.php
Normal file
@ -0,0 +1,21 @@
|
||||
<?php
|
||||
namespace Blog\Middleware;
|
||||
|
||||
use Blog\Http\Request;
|
||||
use Blog\Http\Response;
|
||||
|
||||
/**
|
||||
* Interface für Middleware-Komponenten.
|
||||
*
|
||||
* Definiert eine Methode zur Bearbeitung von HTTP-Anfragen und -Antworten.
|
||||
*/
|
||||
interface MiddlewareInterface {
|
||||
/**
|
||||
* Bearbeitet die eingehende Anfrage und Antwort.
|
||||
*
|
||||
* @param Request $request Das aktuelle Request-Objekt
|
||||
* @param Response $response Das aktuelle Response-Objekt
|
||||
* @return bool true, wenn die Anfrage fortgesetzt werden darf, sonst false
|
||||
*/
|
||||
public function handle(Request $request, Response $response): bool;
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
<?php
|
||||
namespace Blog\Middleware;
|
||||
|
||||
use Blog\Http\request;
|
||||
use Blog\Http\response;
|
||||
|
||||
interface MiddlewareInterface {
|
||||
public function handle(Request $request, Response $response): bool;
|
||||
}
|
Reference in New Issue
Block a user