refactor: centralny autoloader, Shared\Email i Shared\Security
- Utworzono autoload/autoloader.php (hybrydowy PSR-4 + legacy) - Zmigrowano 7 entry pointów do centralnego autoloadera - Dodano PSR-4 mapowanie w composer.json (Domain, Shared, Admin, Frontend) - Utworzono Shared\Email\Email (PHPMailer, migracja z Helpers) - Utworzono Shared\Security\CsrfToken (random_bytes + hash_equals) - Wrappery w Helpers delegują do nowych klas - Zaktualizowano docs/PROJECT_STRUCTURE.md - Inicjalizacja PAUL (.paul/) z roadmapą 19 faz refaktoryzacji Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
28
autoload/Shared/Security/CsrfToken.php
Normal file
28
autoload/Shared/Security/CsrfToken.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
namespace Shared\Security;
|
||||
|
||||
class CsrfToken
|
||||
{
|
||||
const SESSION_KEY = 'csrf_token';
|
||||
|
||||
public static function getToken()
|
||||
{
|
||||
if ( empty( $_SESSION[self::SESSION_KEY] ) )
|
||||
$_SESSION[self::SESSION_KEY] = bin2hex( random_bytes( 32 ) );
|
||||
|
||||
return $_SESSION[self::SESSION_KEY];
|
||||
}
|
||||
|
||||
public static function validate( $token )
|
||||
{
|
||||
if ( empty( $_SESSION[self::SESSION_KEY] ) || empty( $token ) )
|
||||
return false;
|
||||
|
||||
return hash_equals( $_SESSION[self::SESSION_KEY], $token );
|
||||
}
|
||||
|
||||
public static function regenerate()
|
||||
{
|
||||
unset( $_SESSION[self::SESSION_KEY] );
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user