-- Systemrollen kennzeichnen (Rechtemodell, Etappe 1). -- -- Bis hierher war jede Rolle ueber die Rollen-CRUD frei aenderbar - auch -- "Admin", "DSGVO" und "Developer". Man konnte sie umbenennen oder ihre -- Rechte leeren. Zugleich haengen die versteckten Rollen an ihrem NAMEN: -- `user.service.ts` sucht sie per `findFirst({ where: { name: 'DSGVO' } })`. -- Ein umbenannter Datensatz haette den Notfallpfad ins Leere laufen lassen, -- ohne dass irgendwo etwas gemeldet worden waere. -- -- `isSystem` macht diese Rollen zu dem, was sie immer sein sollten: von der -- Anwendung gepflegt, ueber die API sichtbar, aber nicht veraenderbar. -- `isHidden` ersetzt die im Frontend hartkodierte Namensliste, in der -- "Gegenbuch" bisher fehlte - die Rolle tauchte deshalb als anhakbare -- Rolle im Benutzerformular auf. ALTER TABLE `Role` ADD COLUMN IF NOT EXISTS `isSystem` BOOLEAN NOT NULL DEFAULT false; ALTER TABLE `Role` ADD COLUMN IF NOT EXISTS `isHidden` BOOLEAN NOT NULL DEFAULT false; -- Backfill nach Namen. Wer eine dieser Rollen lokal umbenannt hat, wird hier -- nicht getroffen; `synchronisiereRechteUndRollen` legt beim naechsten Start -- eine neue Rolle unter dem erwarteten Namen an und markiert sie. Das ist -- sichtbar (zwei Rollen in der Liste) und damit behandelbar - im Gegensatz -- zu einer stillen Fehlzuordnung. UPDATE `Role` SET `isSystem` = true WHERE `name` IN ('Admin','Developer','DSGVO','Audit-Betrieb','Gegenbuch', 'Mitarbeiter','Mitarbeiter (Nur-Lesen)','Kunde'); UPDATE `Role` SET `isHidden` = true WHERE `name` IN ('Developer','DSGVO','Audit-Betrieb','Gegenbuch','Kunde');