Список форумов BOSSForum.RU - Форум. БОСС-Кадровик
Независимый форум, посвященный системе БОСС-Кадровик
и всему, что с ней связано
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Права доступа к объектам

 
Начать новую тему   Ответить на тему    Список форумов BOSSForum.RU - Форум. БОСС-Кадровик -> SQL: Администрирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
olya_gran



Зарегистрирован: 01.10.2008
Сообщения: 70

СообщениеДобавлено: Пт Окт 10, 2008 14:48    Заголовок сообщения: Права доступа к объектам Ответить с цитатой

М.Администратор – Разграничение доступа – Права доступа к объектам – в объектах можно выбрать из списка: Произвольные отчеты, Подразделения, Операции по списку, Иерархические структуры, Приказы. Почему нельзя эти объекты пополнять самим. Например, нам нужно разграничить доступ на группы мероприятий для возможности занесения мероприятий разными отделами, и чтобы они мероприятий других отделов не видели.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Eng
Site Admin


Зарегистрирован: 13.05.2008
Сообщения: 158

СообщениеДобавлено: Пт Окт 10, 2008 17:54    Заголовок сообщения: Ответить с цитатой

Мне в свое время тоже показалось что права досупа к системе премирования, которую мы разрабатывали для одного заказчика, очень удобно решить именно этим функционалом. Добавление отсутствует потому, что для использования такого разграничения нужно довольно много доработок. В принципе сделать это не сложно.
1. нужно добавить свою строку в таблицу boss_objects по аналогии с тем, что там уже есть. Важное поле - SQLSelect - в него нужно поместить наименование списка (объекта босс-дизайнера)
2. создать список, с именем указанным в пункте 1 который будет списком значений на которые будут выдаваться права (в нашем случае были фонды премирования, в вашем будут группы мероприятий) за образец проще всего взять список pr_list_orders.
3. В тот список, где вы будете ограничивать права, необходимо добавить к селекту следующую конструкцию:
в секцию FROM
Код:
,(boss_protect(nolock)
inner join user_fond (nolock) on BOSS_Protect.ObjectSample = user_fond.id_templ)
inner join boss_objects _hintbrowser on (BOSS_Protect.ObjectId = boss_objects.ObjectId AND boss_objects.SysName = 'budget')

Здесь user_fond - таблица, которую ограничиваем по правам. budget - код, вставленный в таблицу указанную в пункте 1.

В секцию WHERE

Код:
AND BOSS_Protect.role_code = @@Role_code ;


4. Настроить права доступа к вашим объектам в модуле администратор.

Вроде ничего не забыл... Если всетаки забыл и что-то не получается, пишите Smile
P.S. У меня ограничение, прописанное в пункте 3 сделано с помощью алиаса, если входит админ, у него это ограничение отсутствует... поскольку на быстродействии вся эта кухня сказывается довольно ощутимо.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
rebel25
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 06.10.2008
Сообщения: 575
Откуда: Москва

СообщениеДобавлено: Пт Окт 17, 2008 13:44    Заголовок сообщения: Ответить с цитатой

насчёт добавления новых объектов в ограничения нужно написать разработчикам, возможно они и доработают.
А вот к мероприятиямо можно разграничить доступ используя группы мероприятий (обучение, аттестация). Создав роли для каждой группы мероприятий можно стандартными средствами разграничить доступ к ним не прибегая к изменению функционала.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
olya_gran



Зарегистрирован: 01.10.2008
Сообщения: 70

СообщениеДобавлено: Пн Авг 27, 2012 09:28    Заголовок сообщения: права доступа на Архив документов Ответить с цитатой

Может кому понадобится:
Установление прав доступа на Архив документов
1. в BOSS_Object добавить строчку
(21,'Архив документов', 0,Hrtb_file_tree, Sa_hr_lst_prdoc_tree, ObjectSample, Null, Null)
2. Базовый список hr_lst_prdoc_tree сохранить как объект замещения и сделать следующие изменения:
- Добавить в код инициализации:
Код:
if '@@id_firm' == "@@id_firm" then LOCAL @@id_firm := 0;
if '@@Role_Code' == "@@Role_Code" then LOCAL @@Role_Code := '';
if '@@isAdmin' == "@@isAdmin" then LOCAL @@isAdmin := 0;
----------------------------------------------------------------
LOCAL _WHERE_TREE_REC_ := ''; --(это было в базовом объекте)

SELECT BOSS_OBJECTS.ObjectId
INTO :Object_Id_
FROM BOSS_OBJECTS
WHERE UPPER(BOSS_OBJECTS.SysName) = 'hrtb_file_tree';

if @@isAdmin = 1 then
 {alias add_where_ := ;
 }else
 {alias add_where_ := {AND Exists (select top 1 1
                  from boss_protect,
                  hrtb_file_tree mt2,
                  Role
                  where boss_protect.role_code = role.role_code
                  AND Role.role_code = @@Role_code
                  AND boss_protect.objectsample = mt2.id_file_tree
                  AND mt2.id_file_tree = hrtb_file_tree.id_file_tree
                  AND boss_protect.ObjectId = Object_Id_
                     )
               }

- в процедуре TAB вместо «Let _WHERE_TREE_REC_ := '';» прописать
Код:
alias _WHERE_TREE_REC_ :=   AND hrtb_file.id_file_tree = @hr_lst_prdoc_tree:id_file_tree;

- в SQL-запросе во 2-й и 3-й select в оператор where добавить следующее условие
Код:
add_where_

3. Создать новый список sa_hr_lst_prdoc_tree на основе базового hr_lst_prdoc_tree и внести изменения:
a. В свойствах:
- убрать все ссылки на объекты, а в статусную строку прописать ссылку pr_boss_protect
b. В код инициализации добавить следующее:
Код:
-- Создание списка, на записи которого определяются права
Local Title_Obj_;
Let Title_Obj_ := 'Наименование группы архива документов';

Let :_id_doc_ := 0 as Integer;
Alias :_doc_name_ := ************;

ProcLocal B:sa_hr_lst_prdoc_tree={
--sField=значение поля,nField=номер поля
(nCmd,sField,nField,sParam);
switch :nCmd
{
42{--Получили фокус ввода. sField,sParam неопределены, nField = -1
       Msg 2041, @$Sel_role;
       Let :_id_doc_ := @$BOSS_Object_Data:1;
--      return _id_doc_,@$BOSS_Object_Data:1;
       Alias :_doc_name_ := @$BOSS_Object_Data:2;
}
};--switch
};--EndProcLocal

c. В процедуре TAB внести следующие изменения
- переменную @hr_lst_prdoc_tree заменить на @$BOSS_object_Data
- добавить в then 1-го if следующие строки:
Код:
Let :_id_doc_ := @$BOSS_Object_Data:1;
Alias :_doc_name_ := @$BOSS_Object_Data:2;
Msg 2041, @$Sel_role;

d. В SQL-запрос внести следующие изменения
- переменную @hr_lst_prdoc_tree заменить на @$BOSS_object_Data
- group_type[‘’] заменить на 'BOSS_NSI' (незнаю почему, но в таблице hrtb_file_tree столбец group_type заполнен BOSS_NSI)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов BOSSForum.RU - Форум. БОСС-Кадровик -> SQL: Администрирование Часовой пояс: GMT + 4
Страница 1 из 1

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


Pоwerеd by рhpВB © 2001, 2005 рhpВB Grouр
Русская поддержка phрВB
Rambler's Top100 Рейтинг@Mail.ru Список форумов BOSSForum.RU