From aed6831f4a44e9a28daeda7ea37e01769b8dab2b Mon Sep 17 00:00:00 2001 From: Fenris Wolf Date: Thu, 25 Sep 2025 17:26:00 +0200 Subject: [PATCH] [int] --- readme.md | 105 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 readme.md diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..ef37f80 --- /dev/null +++ b/readme.md @@ -0,0 +1,105 @@ +# zeitbild + +## Beschreibung + +"zeitbild" ist eine Kalender-Anwendung mit folgenden Funktionen: + +- multiple Nutzer +- multiple Kalender +- Zugriffssteuerung +- OIDC-Anbindung +- ics-Export + + +## Notizen + +- Kalender sollen unabhängig von Nutzern bestehen können +- Zugriffs-Stufen + - `none`: kein Zugriff + - `view`: nur lesend + - `edit`: lesend und schreibend + - `admin`: kann alles (auch Kalender löschen) +- einem Kalender können beliebig viele Nutzer zugeordnet werden, die jeweils bestimmte Zugriffs-Stufen zugewiesen haben +- Veranstaltungen bilden keine eigene Domäne +- es gibt verschiedene Arten von Quellen: + - lokal + - enthält Veranstaltungen + - caldav + - enthält keine eigenen Veranstaltungen + - sollte read-only- und read/write-Modus haben +- nach dem Anmelden sieht man eine Kalender-Ansicht mit folgenden Kalendern kombiniert angezeigt: + - öffentliche Kalender + - nicht öffentliche Kalendar, bei welchen man mindestens Lese-Berechtigung hat +- öffentliche Kalendar können ohne Anmeldung betrachtet werden, jedoch nur mit einem schwer bis gar nicht erratbaren Link + + +## Zugriffssteuerung + +Es gibt folgende Zugriffsstufen: + +- `none`: kein Zugriff +- `view`: nur Lese-Zugriff +- `edit`: Lese- und Schreib-Zugriff +- `admin`: Lese- und Schreib-Zugriff + Bearbeitung von Kalender-Eigenschaften + +Zur Bestimmung welche Zugriffsstufe ein Nutzer auf einen Kalender/Termin hat, werden drei Werte betrachtet: + +- Öffentlichkeit des Kalenders (`public`) +- Standard-Zugriffsstufe des Kalenders (`default_level`) +- dem Nutzer zugewiesene Zugriffsstufe für den Kalender (`attributed_level`) + +Diese Angaben fließen in folgende Formel ein: + +``` +access_level = max( + (if public then 'view' else 'none'), + (if (attributed = NULL) then default_level else attributed_level) +) +``` + +… wobei die Ordnung der Zugriffsstufen der oben ersichtlichen Reihenfolge entspricht. + +Einzeln aufgeführt ergibt das: + +| public | default level | attributed level | result | +|-- |-- |-- |-- | +| no | none | - | none | +| no | none | none | none | +| no | none | view | view | +| no | none | edit | edit | +| no | none | admin | admin | +| no | view | - | view | +| no | view | none | none | +| no | view | view | view | +| no | view | edit | edit | +| no | view | admin | admin | +| no | edit | - | edit | +| no | edit | none | none | +| no | edit | view | view | +| no | edit | edit | edit | +| no | edit | admin | admin | +| no | admin | - | admin | +| no | admin | none | none | +| no | admin | view | view | +| no | admin | edit | edit | +| no | admin | admin | admin | +| yes | none | - | view | +| yes | none | none | view | +| yes | none | view | view | +| yes | none | edit | edit | +| yes | none | admin | admin | +| yes | view | - | view | +| yes | view | none | view | +| yes | view | view | view | +| yes | view | edit | edit | +| yes | view | admin | admin | +| yes | edit | - | edit | +| yes | edit | none | view | +| yes | edit | view | view | +| yes | edit | edit | edit | +| yes | edit | admin | admin | +| yes | admin | - | admin | +| yes | admin | none | none | +| yes | admin | view | view | +| yes | admin | edit | edit | +| yes | admin | admin | admin |