Таблица соответствия прав группы с объектами (представления)
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
san_light Участник со стажем
Вступление в Клуб: 18.03.2011
|
Чт Окт 31, 2013 08:15  Таблица соответствия прав группы с объектами (представления) |
|
Полезность: Нет оценки
|
Приветствую, гуру и негуру форума!
Вопрос 1-й.
Подскажите, как определяется доступ к объекту? на уровне БД или приложения?
Вопрос 2-й.
Есть таблица criteria_rights, в которой отображается (через которую управляется?) доступ к представлениям. У нее три поля
1) subj_id - группа(пользователь), у которой доступ
2) obj_id - объект(представление), к которому доступ
3) class_id - тип, у которого объект
У нас вроде все сходится, но есть записи, у котой obj_id - представление, которое принадлежит не тому типу, который указан в class_id
Кто с этим сталкивался? или может я не правильно понимаю суть этой таблицы? |
|
 |
devor Профи
Вступление в Клуб: 13.02.2012
|
Чт Окт 31, 2013 08:29   |
|
Полезность: Нет оценки
|
san_light пишет: |
Вопрос 1-й.
Подскажите, как определяется доступ к объекту? на уровне БД или приложения?
|
На уровне приложения
san_light пишет: |
Вопрос 2-й.
Есть таблица criteria_rights, в которой отображается (через которую управляется?) доступ к представлениям.
|
Описание служебных таблиц и представлений |
|
 |
san_light Участник со стажем
Вступление в Клуб: 18.03.2011
|
Чт Окт 31, 2013 08:55  Re: Таблица соответствия прав группы с объектами (представле |
|
Полезность: Нет оценки
|
Спасибо большое, очень полезные файлики. Вы подтвердили мои догадки
Уточню второй вопрос
san_light пишет: |
У нас вроде все сходится, но есть записи, у котой obj_id - представление, которое принадлежит не тому типу, который указан в class_id |
По какой причине это может быть? Могу я просто грохнуть эти записи? |
|
 |
Random Эксперт
Вступление в Клуб: 27.06.2011
|
Чт Окт 31, 2013 09:16  Re: Таблица соответствия прав группы с объектами (представле |
|
Полезность: Нет оценки
|
san_light пишет: |
У нас вроде все сходится, но есть записи, у котой obj_id - представление, которое принадлежит не тому типу, который указан в class_id
По какой причине это может быть? Могу я просто грохнуть эти записи? |
Как раздаются права - лично я ХЗ.
Но, может быть, есть иерархические правила?
Ведь можно же, зайдя в ТБП "Физические лица", вызывать операции, которые находятся в ТБП "Клиенты".
А также в родительских ТБП, если мне не изменяет память, как-то доступны представления дочерних ТБП.
Вот обрати внимание:
Код: |
select r.*, x.class_id, x.short_name, (
select max(decode(rownum, 1, id, ''))
|| max(decode(rownum, 2, '->'||id, ''))
|| max(decode(rownum, 3, '->'||id, ''))
|| max(decode(rownum, 4, '->'||id, ''))
|| max(decode(rownum, 5, '->'||id, ''))
|| max(decode(rownum, 6, '->'||id, ''))
|| max(decode(rownum, 7, '->'||id, ''))
|| max(decode(rownum, 8, '->'||id, ''))
|| max(decode(rownum, 9, '->'||id, ''))
from classes
start with id = r.class_id
connect by id = prior parent_id and prior id <> nvl(x.class_id,'#')
) "Иерархическая зависимость"
from criteria_rights r, criteria x where x.id(+) = r.obj_id
and nvl(x.class_id,'#') <> r.class_id |
|
|
 |
Ezhik Участник со стажем
Вступление в Клуб: 17.04.2009
|
Чт Окт 31, 2013 10:01  Re: Таблица соответствия прав группы с объектами (представле |
|
Полезность: Нет оценки
|
san_light пишет: |
У нас вроде все сходится, но есть записи, у котой obj_id - представление, которое принадлежит не тому типу, который указан в class_id | А тип, который указан, не является родителем/потомком типа, в котором это представление?
С доступами есть такая фишка: Если представление/операция наследуется дочерними типами, то и в этих дочерних типах необходимо выдавать доступ субъекту. |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Чт Окт 31, 2013 10:08   |
|
Полезность: Нет оценки
|
Попробую дополнить предыдущего оратора Random.
Есть, например, ТБП "Кредиты" PR_CRED , в нем представление VW_CRIT_PR_CRED
У ТБП "Кредиты" есть дочерний ТБП "Кредиты юридическим лицам" KRED_CORP
Для того, чтобы пользователь мог в ТБП "Кредиты юридическим лицам" использовать представление VW_CRIT_PR_CRED из родительского ТБП, нужно дать доступ пользователю на это представление в дочернем ТБП "Кредиты юридическим лицам" .
Таким образом, само представление лежит в родительском ТБП (это видно в администраторе словаря или селектом), а права - в дочернем (там где представления НЕТ).
Как то так
Пока писал, ув. Йожыг то же самое но более кратко опубликовал |
|
 |
san_light Участник со стажем
Вступление в Клуб: 18.03.2011
|
Чт Окт 31, 2013 10:11   |
|
Полезность: Нет оценки
|
Эту фишку я учел. Дело в том, что записи, о которых я говорю в Class_id сожержат короткое имя класса абсолютно другого, например по идее дожен быть продукт, а там короткое имя справочника |
|
 |
Random Эксперт
Вступление в Клуб: 27.06.2011
|
Пт Ноя 01, 2013 05:28   |
|
Полезность: Нет оценки
|
san_light пишет: | Эту фишку я учел. Дело в том, что записи, о которых я говорю в Class_id сожержат короткое имя класса абсолютно другого, например по идее дожен быть продукт, а там короткое имя справочника |
Примеры в студию  |
|
 |
san_light Участник со стажем
Вступление в Клуб: 18.03.2011
|
Пт Ноя 01, 2013 06:55   |
|
Полезность: Нет оценки
|
Запрос, фрагмент которого любезно предложен RANDOM
Код: | select r.obj_id
,r.class_id
,c.short_name
,c.id
,c.class_id
,(
select max(decode(rownum, 1, id, ''))
|| max(decode(rownum, 2, '->'||id, ''))
|| max(decode(rownum, 3, '->'||id, ''))
|| max(decode(rownum, 4, '->'||id, ''))
|| max(decode(rownum, 5, '->'||id, ''))
|| max(decode(rownum, 6, '->'||id, ''))
|| max(decode(rownum, 7, '->'||id, ''))
|| max(decode(rownum, 8, '->'||id, ''))
|| max(decode(rownum, 9, '->'||id, ''))
from classes
start with id = r.class_id
connect by id = prior parent_id and prior id <> nvl(c.class_id,'#')
) "Иерархическая зависимость"
from (
select r.obj_id
,r.class_id
,count(*)
from criteria_rights r
group by r.obj_id
,r.class_id
) r
-- criteria_rights r
join criteria c on r.obj_id = c.id
where (
select max(decode(rownum, 1, id, ''))
|| max(decode(rownum, 2, '->'||id, ''))
|| max(decode(rownum, 3, '->'||id, ''))
|| max(decode(rownum, 4, '->'||id, ''))
|| max(decode(rownum, 5, '->'||id, ''))
|| max(decode(rownum, 6, '->'||id, ''))
|| max(decode(rownum, 7, '->'||id, ''))
|| max(decode(rownum, 8, '->'||id, ''))
|| max(decode(rownum, 9, '->'||id, ''))
from classes
start with id = r.class_id
connect by id = prior parent_id and prior id <> nvl(c.class_id,'#')
) not like '%' || c.class_id || '%'
|
Фрагмент результата его выполнения (если не понятно - во вложении скриншот)
1132377028 SVED_LICENSE VW_CRIT_BL_FDOCS 1132377028 BL_FDOCS SVED_LICENSE
121198319 MAIN_DOCUM VW_RPT_USER_FIO 121198319 USER MAIN_DOCUM->DOCUMENT
143571201 MAIN_DOCUM VW_RPT_KAS_SPR_3 143571201 AC_FIN MAIN_DOCUM->DOCUMENT
160125478 AC_FIN VW_RPT_SALD_TURN_NX_2_2_2 160125478 DEPN AC_FIN->ACCOUNT
160160866 AC_FIN VW_RPT_SALD_TURN_NX_2_2_2_2 160160866 BANKS_LOANS AC_FIN->ACCOUNT
197670090 AC_FIN VW_RPT_SALD_TURN_NX_2_2_2_2_2 197670090 DEP_PRIV AC_FIN->ACCOUNT
3801 AC_FIN VW_RPT_P_BRANCH 3801 BRANCH AC_FIN->ACCOUNT
3801 MAIN_DOCUM VW_RPT_P_BRANCH 3801 BRANCH MAIN_DOCUM->DOCUMENT
3801 RKO VW_RPT_P_BRANCH 3801 BRANCH RKO->PRODUCT
3803 AC_FIN VW_RPT_SYSTEM 3803 SYSTEM AC_FIN->ACCOUNT
3803 TRC VW_RPT_SYSTEM 3803 SYSTEM TRC->PRODUCT
3826 AC_FIN VW_RPT_DUMMY 3826 DUMMY AC_FIN->ACCOUNT
3826 DOCUM_RC VW_RPT_DUMMY 3826 DUMMY DOCUM_RC
3826 MAIN_DOCUM VW_RPT_DUMMY 3826 DUMMY MAIN_DOCUM->DOCUMENT |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|