37f6238d05
Vorbereitung für den JWT+Redis-Umschalter: alle verstreuten $_SESSION['teacher_id'|admin_id']-Zugriffe laufen jetzt durch Session::-Helper, damit der Backend-Tausch später EINE Datei (Session.php) ist statt 18 Stellen. - Session.php: neue Admin-Helper adminId()/loginAdmin()/logoutAdmin()/ requireAdmin() (mirror der Teacher-Helper). teacherId()/adminId() starten die Session jetzt lazy (Aufrufer müssen Session::start() nicht mehr). - 18 Fundstellen kanalisiert (admin.php, admin-accounts, admin-modules, licenses, levels, waypoints, foto-upload, admin_gate, save_map). - Country.php + app.php cockpit_href: über Session:: mit class_exists-Fallback (Bootstrap/Lib-Kontext, Session evtl. nicht geladen). Verhaltensneutral: 14/14 Lint OK, Helper-Round-Trip 6/6 PASS, Live-Smoke (admin status/modules/accounts/licenses) weist unauth. Requests wie bisher mit 401/403 ab. AUTH_BACKEND bleibt 'session' — Live unverändert. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
23 lines
768 B
PHP
23 lines
768 B
PHP
<?php
|
|
/**
|
|
* Admin-Gate für Backend-Werkzeuge (Editoren, Uploads).
|
|
* Nur mit gültiger Super-Admin-Session erreichbar — sonst Redirect zur Admin-Login-Seite.
|
|
*
|
|
* Standalone einbindbar: lädt eigene Abhängigkeiten (BASE_PATH + Session), weil diese
|
|
* Werkzeuge z. T. als eigenständige .php ausgeliefert werden (nicht über den Front-Controller).
|
|
*
|
|
* Einbinden ganz am Anfang der zu schützenden Datei:
|
|
* require __DIR__ . '/…/php/lib/admin_gate.php';
|
|
*/
|
|
if (!defined('BASE_PATH')) {
|
|
require_once __DIR__ . '/../config/app.php';
|
|
}
|
|
if (!class_exists('Session')) {
|
|
require_once __DIR__ . '/Session.php';
|
|
}
|
|
if (!Session::adminId()) {
|
|
$base = defined('BASE_PATH') ? BASE_PATH : '';
|
|
header('Location: ' . $base . '/admin.html');
|
|
exit;
|
|
}
|