-- Migration 012: Benutzerrollen
--
-- Additive Migration. Der Migrator toleriert 1050/1060/1061/1062/1091.

-- ---------------------------------------------------------------------------
-- Wozu darf sich dieses Konto anmelden?
-- ---------------------------------------------------------------------------
-- Die Erstinstallation einer Anwendung laeuft ueber ein Konsolenwerkzeug, das
-- auf dem jeweiligen Zielsystem nach Benutzername und Passwort fragt. Wuerde
-- man dort das Admin-Konto eingeben, verteilte man die Zugangsdaten zur
-- gesamten Verwaltungsoberflaeche auf jeden Rechner, auf dem je etwas
-- installiert wurde.
--
-- 'installer' ist deshalb eine eigene Rolle: sie darf ueber
-- /api/setup/v1/login ein kurzlebiges Token ziehen und Anwendungen
-- einrichten - und sonst nichts. Insbesondere ist die Anmeldung am WebUI fuer
-- sie gesperrt.
--
-- Bestandsschutz: alle vorhandenen Konten werden 'admin', damit sich am
-- bisherigen Verhalten nichts aendert.
ALTER TABLE dc_users
  ADD COLUMN role ENUM('admin','installer') NOT NULL DEFAULT 'admin' AFTER password_hash;

-- ---------------------------------------------------------------------------
-- Wann war dieses Konto zuletzt aktiv?
-- ---------------------------------------------------------------------------
-- Ein Installationskonto wird selten benutzt. Ohne diese Angabe laesst sich
-- nicht erkennen, ob ein angelegtes Konto noch gebraucht wird oder seit einem
-- Jahr ungenutzt herumliegt.
ALTER TABLE dc_users
  ADD COLUMN last_login_at DATETIME NULL AFTER role;

-- Ein deaktiviertes Konto bleibt erhalten (die Protokolle verweisen darauf),
-- kann sich aber nicht mehr anmelden.
ALTER TABLE dc_users
  ADD COLUMN disabled TINYINT(1) NOT NULL DEFAULT 0 AFTER last_login_at;

ALTER TABLE dc_users
  ADD KEY ix_users_role (role);
