powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Запрос на получение разрешений у пользователя
1 сообщений из 1, страница 1 из 1
Запрос на получение разрешений у пользователя
    #40053886
n0byk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Делаю систему разрешений для пользователя, у пользователя могут быть выданы права (определенные) или пользователь может состоять в роле у которой есть эти права,

DDL

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
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 
);


пытаюсь получить все права и роли в которых есть эти прова и состоит пользователь:

Код: plsql
1.
2.
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)


С самими правами проблем нет, но если они даны роле а пользователю дана уже эта роль , тот тут уже непонятно в моем запросе для всех пользователей возвращается роль где естьб это разрешение.

Вопрос как возвращать правильныйй рещультат? (Пользователь имеет разрешение напрямую или через роль - нужно проверить такой кес)

Пояснение:

пользователи хранятся в таблице пользователей по колонке user_id ни связываются с таблицей permission_set приведенной выше.
набор прав для роли храниться в ячейке set_to ввиде массива (используется intarray extantion) если пустой массив - это аналог true типо еслть права на этот пермишен - ответ да есть , если есть запись
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Запрос на получение разрешений у пользователя
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]