60 * 60 * 24 * 30, // 30 days 'path' => '/', 'domain' => '', 'secure' => false, 'httponly' => true, 'samesite' => 'Lax' ]); session_start(); } /** * @brief Aktualisierung der Benutzerrollen aus der Datenbank. * * @details Dieser Block wird ausgeführt, um zu Beginn jedes HTTP-Requests * die aktuellen Rechte/Rollen des eingeloggten Nutzers zu evaluieren. * Ist eine `user_id` in der Session vorhanden, wird eine Datenbankabfrage * durchgeführt, um alle verknüpften Rollen des entsprechenden Nutzers zu ermitteln. * Die gefundenen Rollen werden danach als Array in `$_SESSION['user_roles']` gespeichert. * Ist kein Benutzer eingeloggt, wird das Array leer gelassen. */ if (!empty($_SESSION['user_id'])) { /** * @var mysqli $__bsConn * @brief Die aktive Datenbankverbindung für den Bootstrap-Prozess. */ $__bsConn = db_connect(); /** * @var mysqli_stmt|false $__bsStmt * @brief Prepared Statement zum Abfragen der Benutzerrollen. * * Hierbei werden die Tabellen `userRoles` (ur) und `roles` (r) miteinander verknüpft, * um anhand der `userID` die textuellen Namen der Rollen zu selektieren. */ $__bsStmt = $__bsConn->prepare('SELECT r.name FROM userRoles ur JOIN roles r ON r.roleID = ur.roleID WHERE ur.userID = ?'); if ($__bsStmt) { /** * @var int $__bsUid * @brief Typisierte Benutzer-ID, gecastet aus der Session. */ $__bsUid = (int)$_SESSION['user_id']; // Parameterbindung (Interger) an das Prepared Statement $__bsStmt->bind_param('i', $__bsUid); // Ausführung der Abfrage $__bsStmt->execute(); /** * @var mysqli_result $__bsResult * @brief Das Resultset der ausgeführten Datenbankabfrage. */ $__bsResult = $__bsStmt->get_result(); // Reset des Rollen-Arrays in der Session $_SESSION['user_roles'] = []; /** * Iteration durch die zurückgegebenen Datensätze und Speicherung in der Session. */ while ($__bsRow = $__bsResult->fetch_assoc()) { $_SESSION['user_roles'][] = $__bsRow['name']; } // Schließen des Statements, um Ressourcen freizugeben $__bsStmt->close(); } // Schließen der Datenbankverbindung nach erfolgreicher Abfrage $__bsConn->close(); } else { /** * Für Gäste (nicht eingeloggte Benutzer) wird das Rollen-Array explizit geleert. */ $_SESSION['user_roles'] = []; } ?>