Creates /app/core/ for core infrastructure code, essential for the app

main
Yasen Pramatarov 2025-04-24 12:34:27 +03:00
parent bccd48014b
commit 9c896d9e0e
1 changed files with 42 additions and 0 deletions

View File

@ -0,0 +1,42 @@
<?php
namespace App\Core;
use Session;
use Feedback;
class Router {
/**
* Check session validity and handle redirection for protected pages.
* Returns current username if session is valid, null otherwise.
*/
public static function checkAuth(array $config, string $app_root, array $public_pages, string $page): ?string {
$validSession = Session::isValidSession();
if ($validSession) {
return Session::getUsername();
}
if (!in_array($page, $public_pages, true)) {
// flash session timeout if needed
if (isset($_SESSION['LAST_ACTIVITY']) && !isset($_SESSION['session_timeout_shown'])) {
Feedback::flash('LOGIN', 'SESSION_TIMEOUT');
$_SESSION['session_timeout_shown'] = true;
}
// preserve flash messages
$flash_messages = $_SESSION['flash_messages'] ?? [];
Session::cleanup($config);
$_SESSION['flash_messages'] = $flash_messages;
// build login URL
$loginUrl = $app_root . '?page=login';
$trimmed = trim($page, '/?');
if (!in_array($trimmed, INVALID_REDIRECT_PAGES, true)) {
$loginUrl .= '&redirect=' . urlencode($_SERVER['REQUEST_URI']);
}
header('Location: ' . $loginUrl);
exit();
}
return null;
}
}