chore: complete update

This commit is contained in:
2025-07-17 16:24:20 +02:00
parent 899227b0a4
commit 64a7051137
1300 changed files with 85570 additions and 2756 deletions

View File

@@ -0,0 +1,60 @@
<?php
declare(strict_types=1);
namespace App\Framework\Http;
use App\Framework\Attributes\Singleton;
/**
* Service zur Verwaltung der Request-ID für den aktuellen Request.
* Nutzt HMAC-Signierung, um die Integrität der IDs zu gewährleisten.
*/
#[Singleton]
final class RequestIdGenerator
{
private const string REQUEST_ID_HEADER = 'X-Request-ID';
private ?RequestId $requestId = null;
private string $secret;
/**
* Initialisiert den RequestIdGenerator mit einem optionalen Secret
*/
public function __construct(string $secret = '')
{
// Secret über eine Umgebungsvariable beziehen, falls nicht angegeben
$this->secret = $secret ?: ($_ENV['APP_SECRET'] ?? 'default-secret-change-me');
}
/**
* Generiert eine neue Request-ID oder validiert und verwendet eine bestehende
*/
public function generate(): RequestId
{
if ($this->requestId === null) {
// Prüfen, ob eine Request-ID im Header vorhanden ist
$headerRequestId = $_SERVER[str_replace('-', '_', 'HTTP_' . self::REQUEST_ID_HEADER)] ?? null;
// Neue RequestId erstellen (validiert automatisch die Header-ID, falls vorhanden)
$this->requestId = new RequestId($headerRequestId, $this->secret);
}
return $this->requestId;
}
/**
* Gibt die aktuelle Request-ID zurück oder null, wenn noch keine generiert wurde
*/
public function getCurrentId(): ?RequestId
{
return $this->requestId;
}
/**
* Gibt den Header-Namen für die Request-ID zurück
*/
public static function getHeaderName(): string
{
return self::REQUEST_ID_HEADER;
}
}