4.8 KiB
Rechtesystem
Diese Anleitung beschreibt das aktuelle Rechtesystem fuer die Seiten unter public/.
Grundidee
Aktuell gilt:
adminundmasterhaben Vollzugriff auf alle Seiten unterpublic/- normale Benutzer sehen standardmaessig keine geschuetzten Seiten
- einzelne Seiten koennen pro Benutzer durch einen
masterfreigegeben werden - das Header-Menue passt sich an die hinterlegten Seitenrechte an
Rollen
Es gibt zurzeit diese Rollen:
userNormale Benutzerrolle ohne automatischen Zugriff auf die geschuetzten 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.phpEnthaelt Rollen-Helfer, Allowlist und die Liste der freigebbaren Seitenpublic/header.phpPrueft beim Aufruf einer Seite den Zugriff und baut das Menue passend zu den Rechtenpublic/admin_users.phpEnthaelt die Benutzerverwaltung und die Seitenmatrix fuermaster
Datenbank
Fuer 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 zaehlt.
- Unterordner-Seiten werden mit vollem relativen Pfad gespeichert.
Oeffentliche Ausnahmen
Einige Seiten bleiben ohne Seitenfreigabe erreichbar. Diese stehen in der Allowlist in public/auth_helpers.php:
login.phpregister.phplogout.php
Wie der Zugriff geprueft 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_permissionsgeprueft, 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 Menue auf seine wirklich erlaubten Seiten beschraenkt
Wie das Menue funktioniert
Das Header-Menue wird ebenfalls in public/header.php aufgebaut.
Dabei gilt:
- ausgeloggte Besucher sehen nur
AnmeldenundRegistrieren adminundmastersehen das volle Menue- normale Benutzer sehen nur die Menuepunkte, deren
hrefin ihren Seitenfreigaben vorhanden ist - auch der Kontobereich unten im Menue wird entsprechend gefiltert
Damit das funktioniert, muessen Menuelink und page_key exakt zusammenpassen.
Beispiel:
- Menuelink:
geocron/index.php - Datenbankeintrag:
geocron/index.php
Wie ein Master Seiten freigibt
Die Freigaben werden in public/admin_users.php verwaltet.
Ablauf:
- Als
masteranmelden Benutzerverwaltungoeffnen- Im Bereich
Seitenfreigabenden gewuenschten Benutzer waehlen - 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, koennen:
- in der Matrix erscheinen
- einzeln fuer Benutzer freigegeben werden
- sauber im Menue gefiltert werden
Neue Seite ins Rechtesystem aufnehmen
Wenn eine neue Seite unter public/ dazukommt, sind in der Regel diese Schritte noetig:
- Seite anlegen
- Seite so bauen, dass sie den gemeinsamen Header nutzt
- In
manageablePublicPages()eintragen - Falls noetig als Menuepunkt in
public/header.phpeintragen - Darauf achten, dass
hrefundpage_keyexakt gleich sind
Beispiel:
'beispielseite.php' => 'Beispielseite',
Oder fuer Unterordner:
'tools/beispiel.php' => 'Beispielseite',
Wichtige Regel fuer Unterordner
Bei Unterordnern niemals nur index.php verwenden.
Richtig:
geocron/index.php
Falsch:
index.php
Die Seitenerkennung dafuer macht currentPublicPageKey() in public/auth_helpers.php.
Aktueller Stand
Der aktuelle Zustand ist bewusst streng:
- standardmaessig nur
adminodermaster - normale Benutzer nur ueber explizite Seitenfreigaben
Spaeter kann entschieden werden, welche Seiten wieder standardmaessig fuer normale Benutzer sichtbar sein sollen.