4.8 KiB
Rechtesystem
Diese Anleitung beschreibt das aktuelle Rechtesystem für die Seiten unter public/.
Grundidee
Aktuell gilt:
adminundmasterhaben Vollzugriff auf alle Seiten unterpublic/- normale Benutzer sehen standardmäßig keine geschützten Seiten
- einzelne Seiten können pro Benutzer durch einen
masterfreigegeben werden - das Header-Menü passt sich an die hinterlegten Seitenrechte an
Rollen
Es gibt zurzeit diese Rollen:
userNormale Benutzerrolle ohne automatischen Zugriff auf die geschützten SeitenadminVollzugriff auf alle Seiten unterpublic/masterVollzugriff auf alle Seiten unterpublic/plus Verwaltung der Seitenfreigaben anderer Benutzer
Die Rollen-Helfer liegen in public/auth_helpers.php.
Zentrale Logik
Die zentrale Rechtebasis besteht aus drei Bausteinen:
public/auth_helpers.phpEnthält Rollen-Helfer, Allowlist und die Liste der freigebbaren Seitenpublic/header.phpPrüft beim Aufruf einer Seite den Zugriff und baut das Menü passend zu den Rechtenpublic/admin_users.phpEnthält die Benutzerverwaltung und die Seitenmatrix fürmaster
Datenbank
Für die Seitenfreigaben wird diese Tabelle verwendet:
app_user_page_permissions
Wichtige Spalten:
user_idpage_key
page_key entspricht dem relativen Seitenpfad unter public/, zum Beispiel:
moonphase.phptcrb_lightcurve.phpgeocron/index.php
Wichtig:
- Nicht nur der Dateiname zählt.
- Unterordner-Seiten werden mit vollem relativen Pfad gespeichert.
Öffentliche Ausnahmen
Einige Seiten bleiben ohne Seitenfreigabe erreichbar. Diese stehen in der Allowlist in public/auth_helpers.php:
login.phpregister.phplogout.php
Wie der Zugriff geprüft wird
Beim Laden einer Seite mit gemeinsamem Header passiert Folgendes:
header.phpermittelt den aktuellenpage_key- Wenn der Benutzer
adminodermasterist, ist der Zugriff erlaubt - Wenn die Seite in der Allowlist steht, ist der Zugriff erlaubt
- Sonst wird in
app_user_page_permissionsgeprüft, ob der Benutzer genau diese Seite sehen darf - Wenn nein, kommt
403 Zugriff verweigert
Wichtig:
- Eine einzelne Seitenfreigabe macht den Benutzer nicht zu
admin - dadurch bleibt das Menü auf seine wirklich erlaubten Seiten beschränkt
Wie das Menü funktioniert
Das Header-Menü wird ebenfalls in public/header.php aufgebaut.
Dabei gilt:
- ausgeloggte Besucher sehen nur
AnmeldenundRegistrieren adminundmastersehen das volle Menü- normale Benutzer sehen nur die Menüpunkte, deren
hrefin ihren Seitenfreigaben vorhanden ist - auch der Kontobereich unten im Menü wird entsprechend gefiltert
Damit das funktioniert, müssen Menülink und page_key exakt zusammenpassen.
Beispiel:
- Menülink:
geocron/index.php - Datenbankeintrag:
geocron/index.php
Wie ein Master Seiten freigibt
Die Freigaben werden in public/admin_users.php verwaltet.
Ablauf:
- Als
masteranmelden Benutzerverwaltungöffnen- Im Bereich
Seitenfreigabenden gewünschten Benutzer wählen - Haken bei den erlaubten Seiten setzen
- Speichern
Besonderheiten:
adminundmasterbrauchen keine Einzelhaken, weil ihre Rolle bereits Vollzugriff gibt- nur ein
masterdarf Seitenfreigaben bearbeiten
Wo die freigebaren Seiten definiert sind
Die Liste der freigebaren Seiten steht zentral in public/auth_helpers.php in:
manageablePublicPages()
Nur Seiten, die dort eingetragen sind, können:
- in der Matrix erscheinen
- einzeln für Benutzer freigegeben werden
- sauber im Menü gefiltert werden
Neue Seite ins Rechtesystem aufnehmen
Wenn eine neue Seite unter public/ dazukommt, sind in der Regel diese Schritte nötig:
- Seite anlegen
- Seite so bauen, dass sie den gemeinsamen Header nutzt
- In
manageablePublicPages()eintragen - Falls nötig als Menüpunkt in
public/header.phpeintragen - Darauf achten, dass
hrefundpage_keyexakt gleich sind
Beispiel:
'beispielseite.php' => 'Beispielseite',
Oder für Unterordner:
'tools/beispiel.php' => 'Beispielseite',
Wichtige Regel für Unterordner
Bei Unterordnern niemals nur index.php verwenden.
Richtig:
geocron/index.php
Falsch:
index.php
Die Seitenerkennung dafür macht currentPublicPageKey() in public/auth_helpers.php.
Aktueller Stand
Der aktuelle Zustand ist bewusst streng:
- standardmäßig nur
adminodermaster - normale Benutzer nur über explizite Seitenfreigaben
Später kann entschieden werden, welche Seiten wieder standardmäßig für normale Benutzer sichtbar sein sollen.