From 31c9612cc58ebe0cb458d60c43206093fc553dd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Sun, 5 Apr 2026 11:35:45 +0200 Subject: [PATCH] =?UTF-8?q?Rechtesystem=20und=20Readmes=20=C3=BCberarbeite?= =?UTF-8?q?t?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 16 ++ .../README_LOCAL_WEBSERVER.md | 0 docs/README_PROJEKT.md | 167 ++++++++++++++++++ .../README_RECHTESYSTEM.md | 25 +-- public/header.php | 28 +-- public/telegram/broadcast_test.php | 20 ++- 6 files changed, 222 insertions(+), 34 deletions(-) create mode 100644 docs/README.md rename README_LOCAL_WEBSERVER.md => docs/README_LOCAL_WEBSERVER.md (100%) create mode 100644 docs/README_PROJEKT.md rename README_RECHTESYSTEM.md => docs/README_RECHTESYSTEM.md (74%) diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..977b2c1 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,16 @@ +# Dokumentation + +Hier liegen die internen Anleitungen und technischen Hilfen fuer das Projekt. + +## Verfuegbar + +- [`docs/README_PROJEKT.md`](README_PROJEKT.md) + Grundsaetzliche Erklaerung der Website, ihrer Bereiche und Datenfluesse +- [`docs/README_LOCAL_WEBSERVER.md`](README_LOCAL_WEBSERVER.md) + Lokale Startanleitung fuer den PHP-Webserver auf den bekannten Arbeitsplaetzen +- [`docs/README_RECHTESYSTEM.md`](README_RECHTESYSTEM.md) + Beschreibung des aktuellen Rollen- und Seitenrechtesystems + +## Hinweis + +Die bisherigen Dateien im Projekt-Root bleiben als kurze Verweise bestehen, damit bestehende Hinweise nicht sofort kaputtgehen. diff --git a/README_LOCAL_WEBSERVER.md b/docs/README_LOCAL_WEBSERVER.md similarity index 100% rename from README_LOCAL_WEBSERVER.md rename to docs/README_LOCAL_WEBSERVER.md diff --git a/docs/README_PROJEKT.md b/docs/README_PROJEKT.md new file mode 100644 index 0000000..0c99544 --- /dev/null +++ b/docs/README_PROJEKT.md @@ -0,0 +1,167 @@ +# Projektueberblick + +Diese Datei beschreibt die Website grundsaetzlich: Worum es geht, welche Bereiche es gibt und wie die wichtigsten Bausteine zusammenspielen. + +## Zweck der Website + +`SkyView & AstroTools` ist eine Astronomie-Website des Astronomiemuseums der Sternwarte Sonneberg. + +Die Seite verbindet: + +- oeffentliche Astronomie-Werkzeuge +- persoenliche Benutzerfunktionen +- Import- und Auswerteprozesse fuer astronomische Daten +- Telegram-Anbindung fuer Benachrichtigungen und Tests + +## Hauptbereiche + +Die Website besteht im Kern aus vier Bereichen. + +## 1. Oeffentliche Astronomie-Seiten + +Unter [`public/`](../public) liegen die eigentlichen Seiten der Website. + +Typische Inhalte sind: + +- Mond und Mondphasen +- Planetensichtbarkeit +- Sternenhimmel +- Meteorstroeme +- Finsternisse und Bedeckungen +- Geocron und Geocron 3D +- Vorhersage-Seiten wie Monats- und Wochenvorhersage +- Spezialseiten wie die T-CrB-Lichtkurve + +Diese Seiten nutzen in der Regel den gemeinsamen Header und Footer: + +- [`public/header.php`](../public/header.php) +- [`public/footer.php`](../public/footer.php) + +## 2. Benutzerkonten + +Die Seite besitzt eigene Benutzerkonten mit Login. + +Wichtige Konto-Seiten: + +- [`public/login.php`](../public/login.php) +- [`public/register.php`](../public/register.php) +- [`public/settings.php`](../public/settings.php) +- [`public/my_favorites.php`](../public/my_favorites.php) + +Benutzer koennen dort unter anderem: + +- ihr Konto verwalten +- Telegram verbinden +- Standorte verwalten +- Favoriten pflegen + +## 3. Rechtesystem + +Die Seite hat ein Rollen- und Seitenrechtesystem. + +Aktuell gibt es: + +- `user` +- `admin` +- `master` + +Wichtig: + +- `admin` und `master` haben Vollzugriff auf die geschuetzten Seiten +- normale Benutzer erhalten gezielte Seitenfreigaben +- das Header-Menue passt sich an die Seitenrechte an + +Die Details dazu stehen in: + +- [`docs/README_RECHTESYSTEM.md`](README_RECHTESYSTEM.md) + +## 4. Hintergrundprozesse und Datenimporte + +Die Website arbeitet nicht nur mit statischen Seiten, sondern auch mit Import- und Cron-Skripten. + +Wichtige Skripte liegen unter: + +- [`scripts/import/`](../scripts/import) +- [`scripts/telegram/`](../scripts/telegram) + +Beispiele: + +- [`scripts/import/import_tcrb.php`](../scripts/import/import_tcrb.php) + Importiert AAVSO-WebObs-Daten fuer T CrB +- [`scripts/import/import_celestrak_active.php`](../scripts/import/import_celestrak_active.php) + Importiert Satellitendaten +- [`scripts/telegram/telegram_cron.php`](../scripts/telegram/telegram_cron.php) + Fuehrt Telegram-Aufgaben zeitgesteuert aus + +## T CrB + +Ein aktueller Spezialbereich ist `T CrB`. + +Dazu gehoeren: + +- Import der AAVSO-Daten +- Speicherung in der Datenbank +- grafische Darstellung als Lichtkurve +- Telegram-Benachrichtigung zum letzten `V`-Wert + +Wichtige Dateien: + +- [`scripts/import/import_tcrb.php`](../scripts/import/import_tcrb.php) +- [`public/tcrb_lightcurve.php`](../public/tcrb_lightcurve.php) +- [`scripts/telegram/telegram_cron.php`](../scripts/telegram/telegram_cron.php) + +## Telegram + +Die Website besitzt eine Telegram-Anbindung. + +Damit koennen Benutzer: + +- ihr Konto mit Telegram verknuepfen +- spaeter Nachrichten oder Diagramme erhalten + +Wichtige Bausteine: + +- [`public/settings.php`](../public/settings.php) +- [`public/telegram/connect.php`](../public/telegram/connect.php) +- [`public/telegram/webhook.php`](../public/telegram/webhook.php) +- [`public/telegram/broadcast_test.php`](../public/telegram/broadcast_test.php) +- [`scripts/telegram/telegram_cron.php`](../scripts/telegram/telegram_cron.php) + +## Datenfluss grob + +Vereinfacht sieht der Ablauf so aus: + +1. Import-Skripte holen astronomische Daten aus externen Quellen +2. Die Daten werden in der Datenbank gespeichert +3. Seiten unter `public/` lesen diese Daten aus und stellen sie dar +4. Cron-Skripte koennen daraus Telegram-Nachrichten oder andere Folgeaktionen erzeugen + +## Technischer Aufbau + +Die Website ist aktuell klassisch in PHP aufgebaut. + +Wichtige Verzeichnisse: + +- [`public/`](../public) + Webroot und PHP-Seiten +- [`config/`](../config) + Konfigurationen und SQL +- [`scripts/`](../scripts) + Import- und Cron-Skripte +- [`docs/`](.) + Projektdokumentation + +## Fuer neue Arbeit an der Seite wichtig + +Wenn neue Funktionen dazukommen, sollte man immer an diese Punkte denken: + +- braucht die Seite einen Eintrag im Rechtesystem +- soll sie im Header-Menue erscheinen +- braucht sie Datenimport oder Cron +- braucht sie Telegram-Anbindung +- braucht sie Dokumentation in `docs` + +## Passende Zusatzdokumente + +- [`docs/README_LOCAL_WEBSERVER.md`](README_LOCAL_WEBSERVER.md) +- [`docs/README_RECHTESYSTEM.md`](README_RECHTESYSTEM.md) diff --git a/README_RECHTESYSTEM.md b/docs/README_RECHTESYSTEM.md similarity index 74% rename from README_RECHTESYSTEM.md rename to docs/README_RECHTESYSTEM.md index 02068e2..f02636d 100644 --- a/README_RECHTESYSTEM.md +++ b/docs/README_RECHTESYSTEM.md @@ -22,18 +22,18 @@ Es gibt zurzeit diese Rollen: - `master` Vollzugriff auf alle Seiten unter `public/` plus Verwaltung der Seitenfreigaben anderer Benutzer -Die Rollen-Helfer liegen in [auth_helpers.php](/c:/Users/ich/source/repos/skyview.astronomiemuseum.de/public/auth_helpers.php). +Die Rollen-Helfer liegen in [`public/auth_helpers.php`](../public/auth_helpers.php). ## Zentrale Logik Die zentrale Rechtebasis besteht aus drei Bausteinen: -- [auth_helpers.php](/c:/Users/ich/source/repos/skyview.astronomiemuseum.de/public/auth_helpers.php) - Enthält Rollen-Helfer, Allowlist und die Liste der freigebbaren Seiten -- [header.php](/c:/Users/ich/source/repos/skyview.astronomiemuseum.de/public/header.php) +- [`public/auth_helpers.php`](../public/auth_helpers.php) + Enthaelt Rollen-Helfer, Allowlist und die Liste der freigebbaren Seiten +- [`public/header.php`](../public/header.php) Prueft beim Aufruf einer Seite den Zugriff und baut das Menue passend zu den Rechten -- [admin_users.php](/c:/Users/ich/source/repos/skyview.astronomiemuseum.de/public/admin_users.php) - Enthält die Benutzerverwaltung und die Seitenmatrix fuer `master` +- [`public/admin_users.php`](../public/admin_users.php) + Enthaelt die Benutzerverwaltung und die Seitenmatrix fuer `master` ## Datenbank @@ -59,7 +59,7 @@ Wichtig: ## Oeffentliche Ausnahmen -Einige Seiten bleiben ohne Seitenfreigabe erreichbar. Diese stehen in der Allowlist in [auth_helpers.php](/c:/Users/ich/source/repos/skyview.astronomiemuseum.de/public/auth_helpers.php): +Einige Seiten bleiben ohne Seitenfreigabe erreichbar. Diese stehen in der Allowlist in [`public/auth_helpers.php`](../public/auth_helpers.php): - `login.php` - `register.php` @@ -82,10 +82,11 @@ Wichtig: ## Wie das Menue funktioniert -Das Header-Menue wird ebenfalls in [header.php](/c:/Users/ich/source/repos/skyview.astronomiemuseum.de/public/header.php) aufgebaut. +Das Header-Menue wird ebenfalls in [`public/header.php`](../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 @@ -99,7 +100,7 @@ Beispiel: ## Wie ein Master Seiten freigibt -Die Freigaben werden in [admin_users.php](/c:/Users/ich/source/repos/skyview.astronomiemuseum.de/public/admin_users.php) verwaltet. +Die Freigaben werden in [`public/admin_users.php`](../public/admin_users.php) verwaltet. Ablauf: @@ -116,7 +117,7 @@ Besonderheiten: ## Wo die freigebaren Seiten definiert sind -Die Liste der freigebaren Seiten steht zentral in [auth_helpers.php](/c:/Users/ich/source/repos/skyview.astronomiemuseum.de/public/auth_helpers.php) in: +Die Liste der freigebaren Seiten steht zentral in [`public/auth_helpers.php`](../public/auth_helpers.php) in: - `manageablePublicPages()` @@ -133,7 +134,7 @@ Wenn eine neue Seite unter `public/` dazukommt, sind in der Regel diese Schritte 1. Seite anlegen 2. Seite so bauen, dass sie den gemeinsamen Header nutzt 3. In `manageablePublicPages()` eintragen -4. Falls noetig als Menuepunkt in [header.php](/c:/Users/ich/source/repos/skyview.astronomiemuseum.de/public/header.php) eintragen +4. Falls noetig als Menuepunkt in [`public/header.php`](../public/header.php) eintragen 5. Darauf achten, dass `href` und `page_key` exakt gleich sind Beispiel: @@ -160,7 +161,7 @@ Falsch: - `index.php` -Die Seitenerkennung dafuer macht `currentPublicPageKey()` in [auth_helpers.php](/c:/Users/ich/source/repos/skyview.astronomiemuseum.de/public/auth_helpers.php). +Die Seitenerkennung dafuer macht `currentPublicPageKey()` in [`public/auth_helpers.php`](../public/auth_helpers.php). ## Aktueller Stand diff --git a/public/header.php b/public/header.php index e690268..a605fea 100644 --- a/public/header.php +++ b/public/header.php @@ -294,19 +294,21 @@ if ($loggedIn && !$hasFullAdminAccess && $pdoHeader !== null) {