Multitenancy

This commit is contained in:
2026-03-19 18:06:44 +01:00
parent 106ed50361
commit e594defc00
15 changed files with 1090 additions and 37 deletions
+38
View File
@@ -0,0 +1,38 @@
-- ============================================================
-- Ruolo PostgreSQL applicativo pechub_app
--
-- Questo script viene eseguito al primo avvio del container DB.
-- Il ruolo viene creato PRIMA che Alembic esegua le migrazioni.
-- I GRANT sulle singole tabelle vengono gestiti dalla migration 0006.
--
-- Scopo:
-- - pechub_app è un utente non-superuser su cui RLS è attiva
-- - Il backend e il worker usano DATABASE_URL con pechub_app
-- - Alembic usa DATABASE_URL_SYNC con l'utente pechub (superuser)
-- ============================================================
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_roles WHERE rolname = 'pechub_app'
) THEN
CREATE USER pechub_app WITH PASSWORD 'pechub_app_password'
NOSUPERUSER NOCREATEDB NOCREATEROLE;
RAISE NOTICE '[pechub] Ruolo pechub_app creato';
ELSE
RAISE NOTICE '[pechub] Ruolo pechub_app già presente skip';
END IF;
END
$$;
-- Permessi di base (i GRANT sulle tabelle vengono dopo le migrazioni)
GRANT CONNECT ON DATABASE pechub TO pechub_app;
GRANT USAGE ON SCHEMA public TO pechub_app;
-- Default privileges: tutte le future tabelle create da pechub
-- ricevono automaticamente i permessi per pechub_app
ALTER DEFAULT PRIVILEGES FOR ROLE pechub IN SCHEMA public
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO pechub_app;
ALTER DEFAULT PRIVILEGES FOR ROLE pechub IN SCHEMA public
GRANT USAGE, SELECT ON SEQUENCES TO pechub_app;