diff --git a/doc/konzept.md b/doc/konzept.md index a598beb..472072c 100644 --- a/doc/konzept.md +++ b/doc/konzept.md @@ -1,3 +1,7 @@ +# Konzept + +## Notizen + - Kalender sollen unabhängig von Nutzern bestehen können - Zugriffs-Stufen - `none`: kein Zugriff @@ -16,3 +20,75 @@ - ö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 | diff --git a/todo.md b/todo.md index 46f9ade..c61eb73 100644 --- a/todo.md +++ b/todo.md @@ -1,14 +1,13 @@ -## Vorhaben - - externer Zugriff - - regeln über zusätzliche Liste in `access` (`Array<{label : string; level : enum_access_level; link : string;}>`)? - read-only-Ansicht sollte niederschwellig gehen (ohne Anmeldung) -- besondere Eingabe-Bereiche (z.B. für Zugriffs-Zuweisungen oder Resourcen (Koprodukt)) + - Idee 1 + - regeln über zusätzliche Liste in `access` (`Array<{label : string; level : enum_access_level; link : string;}>`)? + - Idee 2 + - Kalender-Eigenschaft "öffentlich" + - Möglichkeit Termine zu anderen Kalendern zu verschieben + - Idee 3 + - Termin-Eigenschaft "öffentlich" + - optional: Kalender-Eigenschaft: "neue Termine standard-mäßig öffentlich" - CalDAV-Export - Caching - OIDC session mapping ordentlich machen -- leere Kalender in der Übersicht aufführen -- Monats-Ansicht -- Listen-Ansicht -- Monats-Beschriftung in Wochen-Ansicht -- Kalender aus-/einblenden