Files
iten.pro/public/auth.php
Eduard Iten 35f152632e
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 11s
Added auth test
2026-04-01 16:15:04 +02:00

43 lines
1.4 KiB
PHP

<?php
session_start();
// 1. Authentifizierungsstatus prüfen (Hier erfolgt später die Authelia-OIDC-Integration)
// Für den initialen Test wird ein manueller Toggle simuliert
$is_logged_in = isset($_SESSION['authenticated']) && $_SESSION['authenticated'] === true;
// Zum Testen erzwingen wir den Login-Fehler, wenn die Session nicht gesetzt ist:
if (!$is_logged_in) {
header("HTTP/1.1 401 Unauthorized");
die("Zugriff verweigert. Die Authelia-Integration folgt hier.");
// Später: header('Location: /login.php'); exit;
}
// 2. Angeforderten Dateipfad ermitteln
$route = $_GET['route'] ?? '';
$route = trim($route, '/');
$base_dir = realpath(__DIR__);
$target_file = $base_dir . '/' . $route;
// Astro generiert Seiten standardmäßig als Verzeichnis mit einer index.html
if (is_dir($target_file)) {
$target_file = rtrim($target_file, '/') . '/index.html';
} elseif (!str_ends_with($target_file, '.html') && file_exists($target_file . '/index.html')) {
$target_file .= '/index.html';
} elseif (!str_ends_with($target_file, '.html')) {
$target_file .= '.html';
}
// 3. Sicherheitsprüfung (Path Traversal verhindern) und Datei ausliefern
$real_target = realpath($target_file);
if ($real_target && file_exists($real_target) && strpos($real_target, $base_dir) === 0) {
header('Content-Type: text/html');
readfile($real_target);
exit;
}
// Fallback
header("HTTP/1.0 404 Not Found");
echo "404 - Geschützte Datei nicht gefunden";
exit;