philippurbschat.de/auth.php

39 lines
No EOL
1.2 KiB
PHP

<?php
// DATEI: ./auth.php (liegt ganz oben im Root)
if (session_status() === PHP_SESSION_NONE) {
// Session für die gesamte Domain ("/") gültig machen
session_set_cookie_params([
'path' => '/',
'httponly' => true,
'secure' => (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off'),
'samesite' => 'Lax' // Lax erlaubt den Wechsel zwischen /home und /test
]);
session_start();
}
// 1. Ist der User eingeloggt?
if (!isset($_SESSION['user_email'])) {
header('Location: /');
exit();
}
// 2. Browser-Check gegen Session Hijacking
if (!isset($_SESSION['user_agent'])) {
$_SESSION['user_agent'] = $_SERVER['HTTP_USER_AGENT'];
} elseif ($_SESSION['user_agent'] !== $_SERVER['HTTP_USER_AGENT']) {
session_destroy();
header('Location: /');
exit();
}
// 3. Rechte-Check (Admins dürfen immer rein)
$isAdmin = isset($_SESSION['is_admin']) && $_SESSION['is_admin'] === true;
$hasProjectAccess = isset($current_project) && isset($_SESSION['user_projects']) && in_array($current_project, $_SESSION['user_projects']);
if (!$isAdmin && !$hasProjectAccess) {
// Kein Admin und kein spezifischer Projekt-Zugriff
header('Location: /');
exit();
}
?>