feat(module-grants): Freigabestufe Verwalten – Datenbank, Zugriffsprüfung und Kantinen-Einstellungen
- Migration: ModuleGrant.level (USE/MANAGE), Bestand bleibt USE - ModuleAccessService.getModuleAccessLevels als einzige Auflösung, MANAGE gewinnt - @ModuleManage(slug) am ModuleGuard, GET /modules/active liefert canManage - Kantinenabrechnung: Einstellungen für Benutzer mit Verwalten, Web-Hook useCanManageModule Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
-- 261002-icv — Freigabestufe fuer Modul-Freigaben: Benutzen (USE) und
|
||||
-- Verwalten (MANAGE).
|
||||
--
|
||||
-- Zweck: jede Zeile in "ModuleGrant" bekommt eine Stufe. USE ist der Bestand
|
||||
-- und der Standard (Modul oeffnen und benutzen). MANAGE erlaubt zusaetzlich,
|
||||
-- die eigenen Einstellungen dieses einen Moduls zu aendern. Freigaben
|
||||
-- erteilen, Module aktivieren und die uebrige Verwaltung bleiben
|
||||
-- Administratoren vorbehalten (das erzwingt die Anwendung, nicht diese
|
||||
-- Migration).
|
||||
--
|
||||
-- Bestandsdaten: durch den DEFAULT 'USE' werden alle vorhandenen Freigaben zu
|
||||
-- USE — niemand gewinnt durch die Migration Rechte.
|
||||
--
|
||||
-- Von Hand geschrieben (Vorbild 20261002120000_kantine_datev_config).
|
||||
--
|
||||
-- Zeilenschutz: keine neue Tabelle. Die vorhandenen Regeln auf "ModuleGrant"
|
||||
-- filtern Zeilen, nicht Spalten, und bleiben unveraendert — rls-coverage
|
||||
-- braucht nichts. PostgreSQL gewaehrt USAGE auf neue Typen automatisch an
|
||||
-- PUBLIC, die Anwendungsrolle tessera_app kann den Aufzaehlungstyp also
|
||||
-- verwenden.
|
||||
--
|
||||
-- WICHTIG: wie alle bisherigen RLS-Migrationen wirken die Zeilenregeln erst,
|
||||
-- wenn die Anwendung als Rolle ohne Umgehungsrecht verbindet (Schalter
|
||||
-- heute AUS, siehe docs/mandantentrennung-datenbankrolle.md).
|
||||
|
||||
CREATE TYPE "ModuleGrantLevel" AS ENUM ('USE', 'MANAGE');
|
||||
|
||||
ALTER TABLE "ModuleGrant" ADD COLUMN "level" "ModuleGrantLevel" NOT NULL DEFAULT 'USE';
|
||||
Reference in New Issue
Block a user