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>
34 lines
1.5 KiB
PL/PgSQL
34 lines
1.5 KiB
PL/PgSQL
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;
|