* add react support * use whoami * update * update * update * create react app * all * sqlx
33 lines
1.7 KiB
SQL
33 lines
1.7 KiB
SQL
-- Add up migration script here
|
|
CREATE TABLE raw_app (
|
|
path varchar(255) PRIMARY KEY,
|
|
version INTEGER NOT NULL DEFAULT 0,
|
|
workspace_id VARCHAR(50) NOT NULL REFERENCES workspace(id),
|
|
summary VARCHAR(1000) NOT NULL DEFAULT '',
|
|
edited_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(),
|
|
data TEXT NOT NULL,
|
|
extra_perms JSONB NOT NULL DEFAULT '{}'
|
|
);
|
|
|
|
CREATE POLICY see_own ON raw_app FOR ALL
|
|
USING (SPLIT_PART(raw_app.path, '/', 1) = 'u' AND SPLIT_PART(raw_app.path, '/', 2) = current_setting('session.user'));
|
|
|
|
CREATE POLICY see_member ON raw_app FOR ALL
|
|
USING (SPLIT_PART(raw_app.path, '/', 1) = 'g' AND SPLIT_PART(raw_app.path, '/', 2) = any(regexp_split_to_array(current_setting('session.groups'), ',')::text[]));
|
|
|
|
CREATE POLICY see_extra_perms_user ON raw_app FOR ALL
|
|
USING (extra_perms ? CONCAT('u/', current_setting('session.user')))
|
|
WITH CHECK ((extra_perms ->> CONCAT('u/', current_setting('session.user')))::boolean);
|
|
|
|
CREATE POLICY see_extra_perms_groups ON raw_app FOR ALL
|
|
USING (extra_perms ?| regexp_split_to_array(current_setting('session.pgroups'), ',')::text[])
|
|
WITH CHECK (exists(
|
|
SELECT key, value FROM jsonb_each_text(extra_perms)
|
|
WHERE SPLIT_PART(key, '/', 1) = 'g' AND key = ANY(regexp_split_to_array(current_setting('session.pgroups'), ',')::text[])
|
|
AND value::boolean));
|
|
|
|
CREATE POLICY see_folder_extra_perms_user ON raw_app FOR ALL
|
|
USING (SPLIT_PART(raw_app.path, '/', 1) = 'f' AND SPLIT_PART(raw_app.path, '/', 2) = any(regexp_split_to_array(current_setting('session.folders_read'), ',')::text[]))
|
|
WITH CHECK (SPLIT_PART(raw_app.path, '/', 1) = 'f' AND SPLIT_PART(raw_app.path, '/', 2) = any(regexp_split_to_array(current_setting('session.folders_write'), ',')::text[]));
|
|
|
|
ALTER TYPE FAVORITE_KIND ADD VALUE 'raw_app'; |