CftClub.ru
Клуб специалистов ЦФТ-Банк

Таблица соответствия прав группы с объектами (представления)

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Администрирование доступа
Предыдущая тема :: Следующая тема  
Автор Сообщение
san_light
Участник со стажем
Неподтвержденный


Вступление в Клуб: 18.03.2011
СообщениеЧт Окт 31, 2013 08:15   Таблица соответствия прав группы с объектами (представления) Ответить с цитатой
Полезность: Нет оценки
Приветствую, гуру и негуру форума! Smile
Вопрос 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: Таблица соответствия прав группы с объектами (представле Ответить с цитатой
Полезность: Нет оценки
Спасибо большое, очень полезные файлики. Вы подтвердили мои догадки Smile
Уточню второй вопрос
san_light пишет:

У нас вроде все сходится, но есть записи, у котой obj_id - представление, которое принадлежит не тому типу, который указан в class_id

По какой причине это может быть? Могу я просто грохнуть эти записи?
Random
Эксперт
Резидент CftClub


Вступление в Клуб: 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 из родительского ТБП, нужно дать доступ пользователю на это представление в дочернем ТБП "Кредиты юридическим лицам" .

Таким образом, само представление лежит в родительском ТБП (это видно в администраторе словаря или селектом), а права - в дочернем (там где представления НЕТ).

Как то так Smile

Пока писал, ув. Йожыг то же самое но более кратко опубликовал
san_light
Участник со стажем
Неподтвержденный


Вступление в Клуб: 18.03.2011
СообщениеЧт Окт 31, 2013 10:11    Ответить с цитатой
Полезность: Нет оценки
Эту фишку я учел. Дело в том, что записи, о которых я говорю в Class_id сожержат короткое имя класса абсолютно другого, например по идее дожен быть продукт, а там короткое имя справочника
Random
Эксперт
Резидент CftClub


Вступление в Клуб: 27.06.2011
СообщениеПт Ноя 01, 2013 05:28    Ответить с цитатой
Полезность: Нет оценки
san_light пишет:
Эту фишку я учел. Дело в том, что записи, о которых я говорю в Class_id сожержат короткое имя класса абсолютно другого, например по идее дожен быть продукт, а там короткое имя справочника


Примеры в студию Smile
san_light
Участник со стажем
Неподтвержденный


Вступление в Клуб: 18.03.2011
СообщениеПт Ноя 01, 2013 06:55    Ответить с цитатой
Полезность: Нет оценки
См. вложениеДата архива: 22.01.2014 01:09
Размер архива: 110.83 КБ

Запрос, фрагмент которого любезно предложен RANDOM Smile
Код:
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

Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Администрирование доступа Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru