41 lines
1.8 KiB
SQL
41 lines
1.8 KiB
SQL
-- R-P11b Dashboard isolation artifact.
|
|
-- Companion to prisma/rls/tenant-isolation.sql. Enable during the merge
|
|
-- migration once the schema lands and the dashboard service has shipped.
|
|
--
|
|
-- Verification:
|
|
-- psql "$DIRECT_URL" -f prisma/rls/dashboard-isolation.sql
|
|
|
|
ALTER TABLE "Dashboard" ENABLE ROW LEVEL SECURITY;
|
|
ALTER TABLE "Dashboard" FORCE ROW LEVEL SECURITY;
|
|
|
|
DROP POLICY IF EXISTS "tenant_isolation_dashboard" ON "Dashboard";
|
|
CREATE POLICY "tenant_isolation_dashboard" ON "Dashboard"
|
|
USING ("tenantId" = current_setting('app.tenant_id', true))
|
|
WITH CHECK ("tenantId" = current_setting('app.tenant_id', true));
|
|
|
|
ALTER TABLE "DashboardLayout" ENABLE ROW LEVEL SECURITY;
|
|
ALTER TABLE "DashboardLayout" FORCE ROW LEVEL SECURITY;
|
|
|
|
DROP POLICY IF EXISTS "tenant_isolation_dashboard_layout" ON "DashboardLayout";
|
|
CREATE POLICY "tenant_isolation_dashboard_layout" ON "DashboardLayout"
|
|
USING ("tenantId" = current_setting('app.tenant_id', true))
|
|
WITH CHECK ("tenantId" = current_setting('app.tenant_id', true));
|
|
|
|
ALTER TABLE "WidgetInstance" ENABLE ROW LEVEL SECURITY;
|
|
ALTER TABLE "WidgetInstance" FORCE ROW LEVEL SECURITY;
|
|
|
|
DROP POLICY IF EXISTS "tenant_isolation_widget_instance" ON "WidgetInstance";
|
|
CREATE POLICY "tenant_isolation_widget_instance" ON "WidgetInstance"
|
|
USING ("tenantId" = current_setting('app.tenant_id', true))
|
|
WITH CHECK ("tenantId" = current_setting('app.tenant_id', true));
|
|
|
|
GRANT SELECT, INSERT, UPDATE, DELETE ON "Dashboard" TO hivegrid_app;
|
|
GRANT SELECT, INSERT, UPDATE, DELETE ON "DashboardLayout" TO hivegrid_app;
|
|
GRANT SELECT, INSERT, UPDATE, DELETE ON "WidgetInstance" TO hivegrid_app;
|
|
|
|
-- Inverse per table:
|
|
-- REVOKE SELECT, INSERT, UPDATE, DELETE ON "<table>" FROM hivegrid_app;
|
|
-- DROP POLICY IF EXISTS "<policy>" ON "<table>";
|
|
-- ALTER TABLE "<table>" NO FORCE ROW LEVEL SECURITY;
|
|
-- ALTER TABLE "<table>" DISABLE ROW LEVEL SECURITY;
|