Personalisierung Schritt 3: Konten im Check-in, Rückmeldung des Agents, Sperren, Neuinstallation

Check-in liefert persoenliche_konten (anlegen mit Hash, aktiv, sperren,
entfernen). /api/v1/agent/persoenliche-konten nimmt die Ergebnisse an:
angelegt löscht den Hash und merkt ohne "Bestehenden Zugang behalten" die
übrigen Konten zum Entfernen vor. Ein Code ohne Kästchen sperrt bestehende
Konten sofort. Sperren/Entsperren je Konto. Eine Neuinstallation beendet
alle Personalisierungen des Geräts. Migration 0065 um gesperrt, entfernen,
geraet_meldung und Status fehlgeschlagen ergänzt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
adminandClaude Opus 5.5 committed 2026-10-15 15:55:51 +02:00
1 parent e12f2206a4
commit b4c77689fd
2 files changed
+197 -5

No files matched your search

+14 -4
View File
@@ -10,16 +10,19 @@ ALTER TABLE organizations
ADD COLUMN email_domaenen TEXT[] NOT NULL DEFAULT '{}';
-- Eine Zeile je Aktivierungscode. Ablauf der Stände:
-- code_offen -> eingereicht -> bestaetigt -> angelegt (Schritt 3)
-- code_offen -> eingereicht -> bestaetigt -> angelegt (Agent hat das
-- Konto am Gerät eingerichtet)
-- Abzweige: zurueckgezogen (Kunden-Admin), verfallen (Code oder
-- Bestätigungsfrist abgelaufen), beendet (Konto entfernt).
-- Bestätigungsfrist abgelaufen), fehlgeschlagen (Gerät konnte das Konto
-- nicht anlegen, z.B. Name schon vergeben), beendet (Konto entfernt oder
-- Gerät neu installiert).
CREATE TABLE personalisierungen (
id UUID PRIMARY KEY,
device_id UUID NOT NULL REFERENCES devices(id) ON DELETE CASCADE,
organization_id UUID NOT NULL REFERENCES organizations(id) ON DELETE CASCADE,
status TEXT NOT NULL CHECK (status IN (
'code_offen', 'eingereicht', 'bestaetigt', 'angelegt',
'zurueckgezogen', 'verfallen', 'beendet'
'zurueckgezogen', 'verfallen', 'fehlgeschlagen', 'beendet'
)),
-- Nur der SHA-256 des normalisierten Codes; der Code selbst wird genau
-- einmal angezeigt.
@@ -39,7 +42,14 @@ CREATE TABLE personalisierungen (
eingereicht_am TIMESTAMPTZ,
bestaetigt_am TIMESTAMPTZ,
angelegt_am TIMESTAMPTZ,
beendet_am TIMESTAMPTZ
beendet_am TIMESTAMPTZ,
-- Nur für angelegte Konten: gesperrt (Anmeldung verweigert, nicht im
-- Anmeldebildschirm) und zum Entfernen vorgemerkt (nach Bestätigung
-- eines neuen Kontos ohne "Bestehenden Zugang behalten").
gesperrt BOOLEAN NOT NULL DEFAULT FALSE,
entfernen BOOLEAN NOT NULL DEFAULT FALSE,
-- Letzte Meldung des Geräts zu diesem Konto (Fehlertext).
geraet_meldung TEXT
);
CREATE INDEX personalisierungen_device_idx ON personalisierungen (device_id, erstellt_am DESC);