@@ -145,3 +145,33 @@ CREATE POLICY "Block deletes on category_hierarchies"
145145ON category_hierarchies FOR DELETE
146146TO anon, authenticated
147147USING (false);
148+
149+ -- ================================================
150+ -- SPATIAL_REF_SYS (PostGIS system table)
151+ -- ================================================
152+ -- Public EPSG coordinate system definitions
153+ -- Read-only for app roles, managed by PostGIS extension
154+ ALTER TABLE spatial_ref_sys ENABLE ROW LEVEL SECURITY;
155+
156+ DROP POLICY IF EXISTS " spatial_ref_sys_select_anon" ON spatial_ref_sys;
157+ DROP POLICY IF EXISTS " spatial_ref_sys_select_authenticated" ON spatial_ref_sys;
158+ DROP POLICY IF EXISTS " spatial_ref_sys_select_service_role" ON spatial_ref_sys;
159+
160+ CREATE POLICY " spatial_ref_sys_select_anon" ON spatial_ref_sys FOR SELECT TO anon USING (true);
161+ CREATE POLICY " spatial_ref_sys_select_authenticated" ON spatial_ref_sys FOR SELECT TO authenticated USING (true);
162+ CREATE POLICY " spatial_ref_sys_select_service_role" ON spatial_ref_sys FOR SELECT TO service_role USING (true);
163+
164+ -- Block writes from app roles
165+ DROP POLICY IF EXISTS " spatial_ref_sys_no_insert_anon" ON spatial_ref_sys;
166+ DROP POLICY IF EXISTS " spatial_ref_sys_no_insert_authenticated" ON spatial_ref_sys;
167+ DROP POLICY IF EXISTS " spatial_ref_sys_no_update_anon" ON spatial_ref_sys;
168+ DROP POLICY IF EXISTS " spatial_ref_sys_no_update_authenticated" ON spatial_ref_sys;
169+ DROP POLICY IF EXISTS " spatial_ref_sys_no_delete_anon" ON spatial_ref_sys;
170+ DROP POLICY IF EXISTS " spatial_ref_sys_no_delete_authenticated" ON spatial_ref_sys;
171+
172+ CREATE POLICY " spatial_ref_sys_no_insert_anon" ON spatial_ref_sys FOR INSERT TO anon WITH CHECK (false);
173+ CREATE POLICY " spatial_ref_sys_no_insert_authenticated" ON spatial_ref_sys FOR INSERT TO authenticated WITH CHECK (false);
174+ CREATE POLICY " spatial_ref_sys_no_update_anon" ON spatial_ref_sys FOR UPDATE TO anon USING (false);
175+ CREATE POLICY " spatial_ref_sys_no_update_authenticated" ON spatial_ref_sys FOR UPDATE TO authenticated USING (false);
176+ CREATE POLICY " spatial_ref_sys_no_delete_anon" ON spatial_ref_sys FOR DELETE TO anon USING (false);
177+ CREATE POLICY " spatial_ref_sys_no_delete_authenticated" ON spatial_ref_sys FOR DELETE TO authenticated USING (false);
0 commit comments