view schema/tap_tests_data.sql @ 180:0423eab4ad45

Improve RLS policies for template data The removed POLICY manage_templates missed a WITH CHECK (true), because the USING clause is applied to new rows, too, if no WITH CHECK is provided, thus implying a dead-lock situation with the FK constraint on user_templates (the POLICY requiring a row in user_templates while INSERTing such row requires a row in templates). New POLICY on user_templates prevents waterway_admin from relating templates to users from other countries and allows to write other policies more compact.
author Tom Gottfried <tom@intevation.de>
date Tue, 17 Jul 2018 19:08:18 +0200
parents 4e2451d561b1
children 4df4e4bf480e
line wrap: on
line source

SET search_path TO public, gemma, gemma_waterway, gemma_fairway;

INSERT INTO countries VALUES ('AT'), ('RO');

INSERT INTO responsibility_areas VALUES
       ('AT', ST_geomfromtext('MULTIPOLYGON(((0 0, 0 1, 1 1, 1 0, 0 0)))', 4326));

INSERT INTO user_profiles (username, country, email_adress)
       VALUES
       ('waterway_user', 'AT', 'xxx'),
       ('waterway_user2', 'RO', 'xxy'),
       ('waterway_admin', 'AT', 'yyy'),
       ('sys_admin', 'AT', 'zzz');

INSERT INTO limiting_factors VALUES ('depth'), ('width');

INSERT INTO gauges (
       location, function_code, objname, geom, zero_point, source_organization)
       VALUES
       (('AT', 'XXX', '00001', '00000', 1)::isrs,
        'xxx',
        'testgauge',
        ST_geomfromtext('POINT(0 0)', 4326),
        0,
        'testorganization');

INSERT INTO bottlenecks (
       bottleneck_id, fk_g_fid, stretch, area, rb, lb, responsible_country,
       revisiting_time, limiting, source_organization, staging_done)
       VALUES
       ('testbottleneck1',
        ('AT', 'XXX', '00001', '00000', 1)::isrs,
        isrsrange(('AT', 'XXX', '00001', '00000', 0)::isrs,
                  ('AT', 'XXX', '00001', '00000', 2)::isrs),
        ST_geomfromtext('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))', 4326),
        'AT', 'AT', 'AT',
        1, 'depth', 'testorganization', false),
       ('testbottleneck2',
        ('AT', 'XXX', '00001', '00000', 1)::isrs,
        isrsrange(('AT', 'XXX', '00001', '00000', 0)::isrs,
                  ('AT', 'XXX', '00001', '00000', 2)::isrs),
        ST_geomfromtext('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))', 4326),
        'AT', 'AT', 'AT',
        1, 'depth', 'testorganization', true);

INSERT INTO templates (template_name, template_data)
       VALUES ('AT', '\x'), ('RO', '\x');
INSERT INTO user_templates
       VALUES ('waterway_user', 'AT'), ('waterway_user2', 'RO');