mirror of
https://codeberg.org/shroff/phylum.git
synced 2026-01-06 11:39:42 -06:00
WIP: Permissions
This commit is contained in:
10
server/sql/queries/permissions.sql
Normal file
10
server/sql/queries/permissions.sql
Normal file
@@ -0,0 +1,10 @@
|
||||
|
||||
-- name: PermissionsForResource :one
|
||||
WITH RECURSIVE nodes(id, parent, permission) AS (
|
||||
SELECT r.id, r.parent, p.permission
|
||||
FROM resources r LEFT JOIN permissions p on r.id = p.resource_id WHERE r.id = @resource_id::uuid AND p.username = @username::text
|
||||
UNION ALL
|
||||
SELECT r.id, r.parent, CASE WHEN (n.permission IS NULL OR p.permission > n.permission) THEN p.permission ELSE n.permission END
|
||||
FROM resources r JOIN nodes n ON r.id = n.parent LEFT JOIN permissions p ON r.id = p.resource_id AND p.username = @username::text
|
||||
)
|
||||
SELECT * FROM nodes WHERE parent IS NULL;
|
||||
@@ -80,4 +80,4 @@ WITH RECURSIVE nodes(id, parent) AS (
|
||||
)
|
||||
DELETE FROM resources
|
||||
WHERE id in (SELECT id FROM nodes)
|
||||
RETURNING id, dir;
|
||||
RETURNING id, dir;
|
||||
|
||||
Reference in New Issue
Block a user