-- Dieses Skript enthält die Logik zur Erstellung eines dedizierten Read-Only-Benutzers
-- und zur Anpassung des Hauptbenutzers.

-- Dieses Skript enthält die Logik zur Erstellung eines dedizierten Read-Only-Benutzers
-- und zur Anpassung des Hauptbenutzers.

-- 1. Erstellen Sie einen neuen Benutzer mit einem sicheren Passwort.
CREATE USER openvox_ro WITH PASSWORD 'Start1234';

-- 2. Entziehen Sie alle Standardberechtigungen für den neuen Benutzer.
ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON TABLES FROM openvox_ro;
ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON SEQUENCES FROM openvox_ro;
ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM openvox_ro;

-- 3. Erteilen Sie die erforderlichen Mindestberechtigungen.
-- Erlauben Sie die Verbindung zur Datenbank.
GRANT CONNECT ON DATABASE openvoxdb TO openvox_ro;

-- Erlauben Sie die Nutzung des 'public'-Schemas.
GRANT USAGE ON SCHEMA public TO openvox_ro;

-- Erteilen Sie Lesezugriff (SELECT) auf alle vorhandenen Tabellen.
GRANT SELECT ON ALL TABLES IN SCHEMA public TO openvox_ro;

-- 4. Stellen Sie sicher, dass der Benutzer auch Lesezugriff auf zukünftig erstellte Tabellen hat.
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO openvox_ro;

-- HINWEIS: Der Hauptbenutzer 'openvox' sollte idealerweise kein Superuser sein,
-- nachdem die Initialisierung abgeschlossen ist. Der folgende Befehl würde dies tun,
-- könnte aber zukünftige Schema-Migrationen verhindern oder mit Postgres 18+ zu Fehlern führen.
-- ALTER USER openvox NOSUPERUSER;

COMMIT;
