Программно выдать доступ копированием прав с другой операции
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Матвеев Евгений Профи
Вступление в Клуб: 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;
|
Спасиб |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|