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

Программно выдать доступ копированием прав с другой операции

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


Вступление в Клуб: 31.01.2012
СообщениеПн Окт 01, 2018 16:08   Программно выдать доступ копированием прав с другой операции Ответить с цитатой
Полезность: Нет оценки
Коллеги, доброго времени суток)

В продолжении темы...

http://cftclub.ru/viewtopic.php?t=5043&highlight=%C4%EE%F1%F2%F3%EF

Программно добавляю в ЗОД новую операцию
Нужно выдать на неё права пользователям\группам, указанным в доступе другой(эталонной) операции...

Кто нибудь сталкивался?
Blackmore64
Профи


Вступление в Клуб: 17.01.2017
СообщениеВт Окт 02, 2018 07:20   Re: Программно выдать доступ копированием прав с другой опер Ответить с цитатой
Полезность: 2
Матвеев Евгений пишет:
Программно добавляю в ЗОД новую операцию
Нужно выдать на неё права пользователям\группам, указанным в доступе другой(эталонной) операции...

Посмотрите, например, CONV.RIGHTS_PASS.pass_rights_meth и ее использование в текстах операций.
Матвеев Евгений
Профи


Вступление в Клуб: 31.01.2012
СообщениеВт Окт 02, 2018 09:28    Ответить с цитатой
Полезность: Нет оценки
Видимо то что нужно...

Код:



/*
Процедура передачи прав от одной операции на другую
(используется обычно в случае когда вместо старой операции создают новую)
   from_class, from_method - короткое имя класса и операции от которой передается доступ
   to_class,to_method      - короткое имя класса и операции, которой передается доступ
   remove_r     - Удалять права на операции у тех субьектов от которых мы эти права копируем
   do_err       - Надо ли генерировать ошибку если from_method не найден
   
   В параметрах from_class, to_class можно дополнительно задать имя класса в котором изменяется доступ к объекту
   (например, для того, чтобы дать право выполнять операцию в классе, являющимся дочерним по отношению к классу
   в котором эта операция реализована.).
   Формат строки в этом случае следующий:
       "{Имя класса в котором реализован объект}|{Имя класса в котором изменяется доступ}"
   Например, права на операцию TEST, реализованной в классе CLIENT, но запускаемую в классе CL_PRIV,
   надо перенаправить на операцию TEST2, также реализованную в классе CLIENT.
   Это можно сделать с помощью такого вызова:
      pass_rights_meth('CLIENT|CL_PRIV', 'TEST', 'CLIENT|CL_PRIV','TEST2');
   Можно указать вместо имени класса для доступа специальную константу ::[CONV].[RIGHTS_PASS].ALL_CLASSES:
   1) Если ALL_CLASSES указана в параметре from_class - тогда при remove_r=true будут удалены права
   на объект независимо от того, в каком классе дан доступ (иначе, по умолчанию - изменяется только доступ в классе,
   в котором реализован объект);
   2) Если ALL_CLASSES указана в параметре to_class - тогда будут даны права на объект во всех
   дочерних классах класса to_class;

*/
procedure pass_rights_meth ( from_class varchar2
      ,from_method varchar2
      ,to_class varchar2
      ,to_method varchar2
      ,remove_r boolean default true
      ,do_err boolean default true);

.
.
.


procedure pass_right_cl(
   p_name_from string(16)
   , p_name_to string(16)
   , p_text_name_form string(250)
   , p_text_name_to string(250)
)
is
begin
   ::[CONV].[RIGHTS_PASS].pass_rights_meth('CLIENT',          p_name_from, 'CLIENT'            , p_name_to, false, false);
   ::[CONV].[RIGHTS_PASS].pass_rights_meth('CLIENT|GROUP',    p_name_from, 'CLIENT|GROUP'      , p_name_to, false, false);
   ::[CONV].[RIGHTS_PASS].pass_rights_meth('CLIENT|CL_PRIV',    p_name_from, 'CLIENT|CL_PRIV'      , p_name_to, false, false);
   ::[CONV].[RIGHTS_PASS].pass_rights_meth('CLIENT|CL_CORP',    p_name_from, 'CLIENT|CL_CORP'      , p_name_to, false, false);
   ::[CONV].[RIGHTS_PASS].pass_rights_meth('CLIENT|CL_BANK',    p_name_from, 'CLIENT|CL_BANK'      , p_name_to, false, false);
   ::[CONV].[RIGHTS_PASS].pass_rights_meth('CLIENT|CL_ORG',    p_name_from, 'CLIENT|CL_ORG'      , p_name_to, false, false);
   ::[CONV].[RIGHTS_PASS].pass_rights_meth('CLIENT|CL_BANK_F',   p_name_from, 'CLIENT|CL_BANK_F'   , p_name_to, false, false);
   ::[CONV].[RIGHTS_PASS].pass_rights_meth('CLIENT|CL_BANK_N',   p_name_from, 'CLIENT|CL_BANK_N'   , p_name_to, false, false);
   ::[CONV].[RIGHTS_PASS].pass_rights_meth('CLIENT|CL_PART',    p_name_from, 'CLIENT|CL_PART'      , p_name_to, false, false);
   
   [CONV].[LOG].WriteMess('Скопированы права от операции "' || p_text_name_form || '" типа "' || ::[CLIENT]%classname
      || '" к операции "' || p_text_name_to || '" типа "'|| ::[CLIENT]%classname ||'"');
end;




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

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