Benutzer – Systembeschreibung

Die Systemansicht der Basisbenutzer: Endpunkte, Kontingent- und Mandantenbindung beim Anlegen, Einladung und Passwort-Zurücksetzen, Löschschutz und Berechtigungen.

Überblick

Ansicht der Basisbenutzer: Liste, Formular, Status, API-Schlüssel, Portal-Link, Einladung und Passwort-Zurücksetzen. Die Tabellennamen tragen in der Datenbank das eigene Präfix der Installation. Beteiligt: Basis-Benutzer- und Gruppentabelle, user_api_key, Portalspeicher, person (Verknüpfung), user_feature, subscription_account, usage.

Endpunkte nur für Super-Admins

user.list, user.form, user.status, user.token und user.tokendelete (API-Schlüssel in user_api_key), user.portalinfo, user.portaldomain, user.portalsend (Portal-Link, Shopwahl, Versand über Dlbtmail::dispatch), user.delete. Alle verlangen isSuper(). Das Löschen löscht nicht sich selbst; bei Verweisen (getUserLinks) listet es sie auf und verweigert; sonst deleteUser.

Anlegen (add, SUBSCRIPTION)

  1. Berechtigung: canSave($route, 0) → canAction(add).
  2. Validierung: Benutzername mindestens 3, E-Mail, Passwort mindestens 4 Zeichen.
  3. Kontingent: Dlbtquota::checkAction(creator, 'user/user', 'add', 1) – bei need_credit oder need_plan Fehler und Angebotsdaten für das Modal.
  4. addUser() mit der übermittelten Gruppe, fillUserRoleFromGroup().
  5. Hat der Anlegende einen Heimatmandanten: attachUserToClient() und syncClientPlan(client, creator, new_user).
  6. consumeAction(); optionale Personenverknüpfung (person_id); json.redirect zum Formular.

Ändern und Einladung

  • edit: canSave($route, id) → canAction(edit); editUser(), bei Gruppenwechsel fillUserRoleFromGroup().
  • invite (user.invite, user.passwordreset, user.inviterevoke): Einladungs- oder Zurücksetzungslink per E-Mail (Dlbtmail::dispatch), mit Protokoll (dlbtlog); der Widerruf entwertet die offenen Einladungstoken des Benutzers. Berechtigung: canAction(invite); E-Mail und Konto müssen existieren.

Berechtigungen und Einschränkungen

  • Im Seed ist list UNMAPPED und statusdelete BASE – der Controller prüft keines davon. edit, invite, debug sind nicht eingestuft.
  • Das Anlegen schränkt die wählbare Benutzergruppe nicht ein.
  • Das Ändern prüft den Inhaltsbereich des Zielbenutzers nicht.