WorkTime ProHandbuch
Zur Anwendung

Mandant

Ein Mandant ist ein eigener, abgeschlossener Datenbestand: die Mitarbeiter, Zeiten und Auswertungen eines Betriebs. Daten anderer Mandanten sind nicht sichtbar.

Was beim Anlegen entsteht

Bei der Selbstregistrierung entstehen in einem Zug:

  • der Mandant mit Kurzzeichen und Name,
  • ein Abonnement im Probestatus,
  • die Grundausstattung: alle Systemrollen mit ihren Rechten, die Abwesenheitsarten und die ArbZG-Regeln,
  • das erste Benutzerkonto mit der Rolle Geschäftsführung.

Die Grundausstattung ist nicht nebensächlich: Ohne Rolle für Mitarbeiter könnten sich angelegte Konten anmelden und nichts tun, und ohne Abwesenheitsart ließe sich kein einziger Urlaubsantrag stellen.

Das Kurzzeichen muss frei sein; sonst „Dieser Mandanten-Slug ist bereits vergeben“.

Wie die Trennung durchgesetzt wird

Auf zwei Ebenen, und das ist Absicht:

  1. In der Anwendung. Jede Abfrage läuft über einen Mandantenclient, der den Filter selbst setzt.
  2. In der Datenbank. Row-Level-Security mit FORCE ROW LEVEL SECURITY; die Richtlinien lesen den Mandanten aus dem Sitzungskontext.

Die zweite Ebene greift nur, wenn sich die Anwendung als Benutzer ohne Sonderrechte verbindet: Für den Eigentümer der Tabellen gilt Row-Level-Security nicht. Die API meldet das beim Start als Fehler und verweigert ihn im Produktivbetrieb. Siehe PostgreSQL einrichten.

Wenige Tabellen tragen selbst keine Mandantenkennung — die Zeitkonto-Buchungen etwa hängen über das Konto daran. Jeder Zugriff darauf ohne Mandantenfilter ist im Quelltext begründet, und eine Prüfung wacht darüber, dass die Begründung dasteht.

Dieselbe E-Mail in mehreren Mandanten

Eindeutig ist nur die Kombination aus Mandant und E-Mail. Ohne Mandantenangabe prüft die Anmeldung das Passwort gegen alle Kandidaten und meldet nur an, wenn genau einer passt. Passen mehrere — gleiches Passwort in zwei Mandanten —, muss der Mandant angegeben werden. Über nicht passende Konten wird dabei nichts preisgegeben.

Löschen

Ein Mandant lässt sich mitsamt allen Daten löschen (Art. 17 DSGVO). Dafür gilt:

  • Nur der eigene Mandant, auch mit Wildcard-Recht.
  • Nur die Administration (*).
  • Das Kurzzeichen muss zur Bestätigung genau eingetippt werden.

Das Prüfprotokoll ist per Datenbank-Trigger unveränderlich; ohne eine kontrollierte Ausnahme ließe sich ein Mandant überhaupt nicht entfernen. Die Ausnahme gilt nur innerhalb dieser Transaktion und nur für die Zeilen genau dieses Mandanten.

Was bleibt, ist ein Beleg in einer eigenen Tabelle: wer wann welchen Mandanten mit wie vielen Datensätzen gelöscht hat. Ohne ihn verschwände mit dem Mandanten auch jede Spur des Vorgangs.