# 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 |