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

4.8 KiB

Rechtesystem

Diese Anleitung beschreibt das aktuelle Rechtesystem fuer die Seiten unter public/.

Grundidee

Aktuell gilt:

  • admin und master haben Vollzugriff auf alle Seiten unter public/
  • normale Benutzer sehen standardmaessig keine geschuetzten Seiten
  • einzelne Seiten koennen pro Benutzer durch einen master freigegeben werden
  • das Header-Menue passt sich an die hinterlegten Seitenrechte an

Rollen

Es gibt zurzeit diese Rollen:

  • user Normale Benutzerrolle ohne automatischen Zugriff auf die geschuetzten 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

Fuer 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 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.php
  • register.php
  • logout.php

Wie der Zugriff geprueft 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 geprueft, 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 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 Anmelden und Registrieren
  • admin und master sehen das volle Menue
  • normale Benutzer sehen nur die Menuepunkte, deren href in 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:

  1. Als master anmelden
  2. Benutzerverwaltung oeffnen
  3. Im Bereich Seitenfreigaben den gewuenschten Benutzer waehlen
  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, 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:

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

Spaeter kann entschieden werden, welche Seiten wieder standardmaessig fuer normale Benutzer sichtbar sein sollen.