Files
skyview.astronomiemuseum.de/docs/README_RECHTESYSTEM.md
T

4.8 KiB

Rechtesystem

Diese Anleitung beschreibt das aktuelle Rechtesystem für die Seiten unter public/.

Grundidee

Aktuell gilt:

  • admin und master haben Vollzugriff auf alle Seiten unter public/
  • normale Benutzer sehen standardmäßig keine geschützten Seiten
  • einzelne Seiten können pro Benutzer durch einen master freigegeben werden
  • das Header-Menü passt sich an die hinterlegten Seitenrechte an

Rollen

Es gibt zurzeit diese Rollen:

  • user Normale Benutzerrolle ohne automatischen Zugriff auf die geschützten Seiten
  • admin Vollzugriff auf alle Seiten unter public/
  • master Vollzugriff auf alle Seiten unter public/ plus Verwaltung der Seitenfreigaben anderer Benutzer

Die Rollen-Helfer liegen in public/auth_helpers.php.

Zentrale Logik

Die zentrale Rechtebasis besteht aus drei Bausteinen:

Datenbank

Für die Seitenfreigaben wird diese Tabelle verwendet:

  • app_user_page_permissions

Wichtige Spalten:

  • user_id
  • page_key

page_key entspricht dem relativen Seitenpfad unter public/, zum Beispiel:

  • moonphase.php
  • tcrb_lightcurve.php
  • geocron/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.php
  • register.php
  • logout.php

Wie der Zugriff geprüft wird

Beim Laden einer Seite mit gemeinsamem Header passiert Folgendes:

  1. header.php ermittelt den aktuellen page_key
  2. Wenn der Benutzer admin oder master ist, ist der Zugriff erlaubt
  3. Wenn die Seite in der Allowlist steht, ist der Zugriff erlaubt
  4. Sonst wird in app_user_page_permissions geprüft, ob der Benutzer genau diese Seite sehen darf
  5. 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 Anmelden und Registrieren
  • admin und master sehen das volle Menü
  • normale Benutzer sehen nur die Menüpunkte, deren href in 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:

  1. Als master anmelden
  2. Benutzerverwaltung öffnen
  3. Im Bereich Seitenfreigaben den gewünschten Benutzer wählen
  4. Haken bei den erlaubten Seiten setzen
  5. Speichern

Besonderheiten:

  • admin und master brauchen keine Einzelhaken, weil ihre Rolle bereits Vollzugriff gibt
  • nur ein master darf 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:

  1. Seite anlegen
  2. Seite so bauen, dass sie den gemeinsamen Header nutzt
  3. In manageablePublicPages() eintragen
  4. Falls nötig als Menüpunkt in public/header.php eintragen
  5. Darauf achten, dass href und page_key exakt 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 admin oder master
  • normale Benutzer nur über explizite Seitenfreigaben

Später kann entschieden werden, welche Seiten wieder standardmäßig für normale Benutzer sichtbar sein sollen.