backend/doc/konzept.md
2024-10-05 14:31:21 +02:00

2.9 KiB

Konzept

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