Personalisierung per Einladung statt Aktivierungscode (ADR-0041, 24.10.2026)
Kunden-Admin trägt die Adresse ein (nur mit Merkmal), der Link (7 Tage, einmalig) führt zu Anmeldename und Passwort; Stand-Seite per abgeleitetem Token. Migration 0072: Stand eingeladen, Code-Spalten optional, laufende Codes zurückgezogen. Code-Endpunkte entfernt; Passwort-vergessen-Kiosk bleibt bis zur Umstellung der Rolle. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
2f6dfd585b
commit
bcfe411290
2 files changed
+204
-164
No files matched your search
@@ -0,0 +1,33 @@
|
||||
BEGIN;
|
||||
|
||||
-- Vereinfachte Personalisierung (ADR-0041, Ergänzung 24.10.2026): Der
|
||||
-- Kunden-Admin trägt die Adresse des Benutzers beim Gerät ein, der Benutzer
|
||||
-- wählt Anmeldename und Passwort über einen Mail-Link. Kein Aktivierungscode
|
||||
-- und keine eigene Bestätigung mehr; der Link belegt den Besitz der Adresse.
|
||||
--
|
||||
-- Neuer Ablauf der Stände:
|
||||
-- eingeladen -> bestaetigt -> angelegt
|
||||
-- Der Link nutzt bestaetigung_token_hash/bestaetigung_bis (7 Tage). Die
|
||||
-- Adresse bleibt beim Verfall erhalten: Sie stammt vom Kunden-Admin, nicht
|
||||
-- von einer unbestätigten Eingabe.
|
||||
|
||||
ALTER TABLE personalisierungen DROP CONSTRAINT personalisierungen_status_check;
|
||||
ALTER TABLE personalisierungen ADD CONSTRAINT personalisierungen_status_check CHECK (status IN (
|
||||
'eingeladen', 'code_offen', 'eingereicht', 'bestaetigt', 'angelegt',
|
||||
'zurueckgezogen', 'verfallen', 'fehlgeschlagen', 'beendet'
|
||||
));
|
||||
|
||||
ALTER TABLE personalisierungen ALTER COLUMN code_hash DROP NOT NULL;
|
||||
ALTER TABLE personalisierungen ALTER COLUMN code_gueltig_bis DROP NOT NULL;
|
||||
|
||||
-- Laufende Vorgänge aus dem Code-Weg gibt es nach dem Umbau nicht mehr.
|
||||
UPDATE personalisierungen
|
||||
SET status = 'zurueckgezogen', passwort_hash = NULL, bestaetigung_token_hash = NULL
|
||||
WHERE status IN ('code_offen', 'eingereicht');
|
||||
|
||||
DROP INDEX personalisierungen_ein_offener_je_geraet;
|
||||
CREATE UNIQUE INDEX personalisierungen_ein_offener_je_geraet
|
||||
ON personalisierungen (device_id)
|
||||
WHERE status IN ('eingeladen', 'code_offen', 'eingereicht', 'bestaetigt');
|
||||
|
||||
COMMIT;
|
||||
Reference in new issue
Block a user