munin/internal/store/migrations_control/002_workspace_admins.sql

27 lines
1.3 KiB
SQL

-- Workspace-Admins (AUSBAUSTUFEN.md 4.8).
--
-- Ein Workspace-Admin verwaltet in genau einem Workspace Projekte und deren
-- Keys — nur über die Weboberfläche, nie über MCP. Er ist damit das Gegenstück
-- zum Plattform-Admin (ADMIN_TOKEN), aber ohne Zugriff auf andere Workspaces,
-- das Schreibbudget oder den Export.
--
-- Die Tabelle liegt in der Kontroll-Datenbank und nicht in der Workspace-Datei:
-- Beim Anmelden ist der Workspace noch unbekannt, und genau diese Frage — zu
-- welchem Workspace gehört dieses Token? — beantwortet die Kontroll-Datenbank.
--
-- Wie bei den API-Keys steht hier nur der Hash, nie der Klartext. Ein
-- zurückgezogener Zugang bleibt als Zeile erhalten (revoked_at gesetzt), damit
-- das Protokoll weiterhin sagen kann, wer etwas getan hat.
--
-- Leerer Text statt NULL für "noch nie benutzt" und "aktiv" — wie bei api_keys.
CREATE TABLE workspace_admins (
id TEXT PRIMARY KEY,
workspace_id TEXT NOT NULL REFERENCES workspaces(id) ON DELETE CASCADE,
name TEXT NOT NULL,
hash TEXT NOT NULL UNIQUE,
created_at TEXT NOT NULL,
last_used_at TEXT NOT NULL DEFAULT '',
revoked_at TEXT NOT NULL DEFAULT ''
);
CREATE INDEX idx_workspace_admins_workspace ON workspace_admins (workspace_id);