table set user to permission or some role - 角色可能有一些权限
set_id|user_id|role_id|permission_id|set_to|add_time |start_at|end_at|active|
------|-------|-------|-------------|------|-------------------|--------|------|------|
15| 2| | 7|{} |2021-03-15 13:00:43| | |true |
16| 1| 1| |{} |2021-03-15 13:02:29| | |true |
14| 1| | 7|{1,2} |2021-03-15 13:00:43| | |true |
17| | 1| 7|{99} |2021-03-15 13:02:43| | |true |
问题:尝试获取用户及其权限和角色(如果没有权限但设置了具有该权限的某个角色)
尝试这样:
select * from permission_set ps
where ps.user_id = 1
and ps.permission_id = 7
or ps.role_id = any(select role_id from permission_set pss
where pss.permission_id = 7
and pss.active is true)
问题是角色以任何方式出现,我无法修复它。
附言。 DDL
CREATE TABLE public.permission_set (
set_id serial NOT NULL,
user_id int4 NULL,
role_id int4 NULL,
permission_id int8 NULL,
set_to _int4 NULL DEFAULT '{}'::integer[],
add_time timestamp NULL DEFAULT timezone('utc'::text, now()),
start_at timestamp NULL,
end_at timestamp NULL,
active bool NULL DEFAULT true
);