Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Gobur Профи
Вступление в Клуб: 06.11.2012
|
Сб Ноя 10, 2012 06:30  Смена группы доступа программным путем |
|
Полезность: Нет оценки
|
Возможно ли вообще такое? Доступ в ИБСО касательно ритейла как то не очень удобно организован. Поясню. Есть много городов, в каждом городе много отделений. Работники отделений города работают по плавающему графику.
Если например использовать группу с доступом по рекивзиту подразделения (например операционист должен видеть документы только своего подразделения, ну и счета касс тоже), то делаю группы Отделение1, Отделение2 (там протыкнуты ТБП и отделения).
Соотвественно когда идет ротация - надо зайти в каждого перепривязать эту группу, в пользователях выставить подразделение? Кто-нибудь решал эту проблему или чисто так и сидеть перетаскивать? В идеале бы пользователь должен выбирать отделение где он сегодня из списка доступных (как В RBS). Буду благодарен за любые идеи. Сидеть каждый день даже на 100 человек (а их больше) заниматься перетаскиванием групп - это жесткач просто. |
|
![](templates/subSilver/images/spacer.gif) |
devor Профи
Вступление в Клуб: 13.02.2012
|
Сб Ноя 10, 2012 07:40  Re: Смена группы доступа программным путем |
|
Полезность: Нет оценки
|
Gobur пишет: | Возможно ли вообще такое? |
Запрограммировать можно все, за исключением искусственного интеллекта.
Смотри пакет SECURITY, смотри в БД структуру таблиц доступа. |
|
![](templates/subSilver/images/spacer.gif) |
molokov Участник со стажем
Вступление в Клуб: 28.09.2007
|
Пн Ноя 12, 2012 07:40  Re: Смена группы доступа программным путем |
|
Полезность: 2
|
этого будеть достаточно чтобы самому организовать то что нужно.
SecAdmin.Insert_User_To_Group(логин пользователя,'короткое имя группы');
SecAdmin.Delete_User_From_Group(логин пользователя,'короткое имя группы');
узнать какие права есть у пользователя :
SELECT USERNAME R
FROM ibs.subj_equal su, ibs.users u
WHERE su.subj_id <> su.equal_id
AND su.subj_id = su.owner_id
AND su.equal_id = u.USERNAME
AND su.subj_id = 'имя пользователя'
Gobur пишет: | Возможно ли вообще такое? . |
|
|
![](templates/subSilver/images/spacer.gif) |
Gobur Профи
Вступление в Клуб: 06.11.2012
|
Пн Ноя 12, 2012 08:22  Re: Смена группы доступа программным путем |
|
Полезность: Нет оценки
|
molokov пишет: | этого будеть достаточно чтобы самому организовать то что нужно.
SecAdmin.Insert_User_To_Group(логин пользователя,'короткое имя группы');
SecAdmin.Delete_User_From_Group(логин пользователя,'короткое имя группы');
узнать какие права есть у пользователя :
Gobur пишет: | Возможно ли вообще такое? . |
|
Спасибо, единственно не понял нужен ли после этого дисконнект для обновления контекста?
Вообще вроде бы в операции редактирования пользователя есть об этом ) |
|
![](templates/subSilver/images/spacer.gif) |
garsia Участник со стажем
Вступление в Клуб: 01.11.2012
|
Ср Ноя 14, 2012 16:36  Re: Смена группы доступа программным путем |
|
Полезность: Нет оценки
|
Частная задача: заменить юзеру его подразделение
Такой синтаксис корректен?
Код: |
locate Ref_User in ::[USER] where Ref_User = 12345;
stdio.put_line_buf('<% PLPCALL [USER].[EDIT#AUTO](
P#DEPART => '''||to_char(New_DEPART)||'''
)%>');
|
У меня сомнение, правильно ли указан экземпляр для изменения... |
|
![](templates/subSilver/images/spacer.gif) |
Gobur Профи
Вступление в Клуб: 06.11.2012
|
Ср Ноя 14, 2012 21:12  Re: Смена группы доступа программным путем |
|
Полезность: Нет оценки
|
garsia пишет: | Частная задача: заменить юзеру его подразделение
Такой синтаксис корректен?
Код: |
locate Ref_User in ::[USER] where Ref_User = 12345;
stdio.put_line_buf('<% PLPCALL [USER].[EDIT#AUTO](
P#DEPART => '''||to_char(New_DEPART)||'''
)%>');
|
У меня сомнение, правильно ли указан экземпляр для изменения... |
Так то у тебя форма откроется - есть ли смысл?
не проще кусок текста вставить в операцию, который подразделение меняет из той же операции редактирования юзера
Код: | -- BS00083081 - Закрытие сессий пользователя при смене его подразделения
if nvl(Ref_User.[DEPART]%id, 0) != nvl(NewDepart, 0) then
is_dep_ch := true;
end if;
Ref_User.[DEPART] :=NewDepart;
Ref_User.[FILIAL] := nvl(NewDepart.[FILIAL], ::[SYSTEM].[VARIABLES].OurBranch);
if is_dep_ch then
commit; -- BS00157077
rtl.send_events(9, 'CLOSE', P#USERNAME);
end if; |
|
|
![](templates/subSilver/images/spacer.gif) |
garsia Участник со стажем
Вступление в Клуб: 01.11.2012
|
Чт Ноя 15, 2012 07:48  Re: Смена группы доступа программным путем |
|
Полезность: Нет оценки
|
Спасибо! ) |
|
![](templates/subSilver/images/spacer.gif) |
garsia Участник со стажем
Вступление в Клуб: 01.11.2012
|
Пт Ноя 16, 2012 09:12  Re: Смена группы доступа программным путем |
|
Полезность: Нет оценки
|
molokov пишет: |
SecAdmin.Insert_User_To_Group(логин пользователя,'короткое имя группы');
SecAdmin.Delete_User_From_Group(логин пользователя,'короткое имя группы');
Gobur пишет: | Возможно ли вообще такое? . |
|
Спасибо за наводку, все работает! - Но только под админом.
Делаю то же самое, для созданного с нуля пользователя - ругается на отсутствие прав на эти операции.
Пакета SecAdmin в словаре нет, хотя обращения к нему есть в других операциях - кадры, пластики...
Как дать доступ к этому пакету не администратору, штатными средствами? |
|
![](templates/subSilver/images/spacer.gif) |
lexus Профи
Вступление в Клуб: 28.09.2007
|
Пт Ноя 16, 2012 09:40   |
|
Полезность: Нет оценки
|
Дать ему оракловую роль IBS_UADMIN.
Либо в админе доступа поставить галку Администратор доступа этому пользователю |
|
![](templates/subSilver/images/spacer.gif) |
Gobur Профи
Вступление в Клуб: 06.11.2012
|
Пт Ноя 16, 2012 09:47   |
|
Полезность: Нет оценки
|
lexus пишет: | Дать ему оракловую роль IBS_UADMIN.
Либо в админе доступа поставить галку Администратор доступа этому пользователю |
штатными токо галочку поставить? Но тут проблема с лицензиями может быть . Если же чисто через оракл раздавать - тогда уж роли Connect проще дать гранты на запуск пакета (но как это при обновлениях скажется?) |
|
![](templates/subSilver/images/spacer.gif) |
garsia Участник со стажем
Вступление в Клуб: 01.11.2012
|
Пт Ноя 16, 2012 09:50   |
|
Полезность: Нет оценки
|
lexus пишет: | Дать ему оракловую роль IBS_UADMIN.
Либо в админе доступа поставить галку Администратор доступа этому пользователю |
Ну это уже перебор... Слипнеца у него! ))
Мы посоветовались, можно попробовать просто средствами Oracle дать грант на пакедж роли Connect.
Хотелось бы узнать, нет ли штатного способа в ИБСО. |
|
![](templates/subSilver/images/spacer.gif) |
lexus Профи
Вступление в Клуб: 28.09.2007
|
Пт Ноя 16, 2012 11:36   |
|
Полезность: Нет оценки
|
штатными спрашивали же
а так, да - хоть пользователю грант на исполнение пакета дайте да и все. |
|
![](templates/subSilver/images/spacer.gif) |
garsia Участник со стажем
Вступление в Клуб: 01.11.2012
|
Пт Ноя 16, 2012 12:04   |
|
Полезность: Нет оценки
|
lexus пишет: | штатными спрашивали же
а так, да - хоть пользователю грант на исполнение пакета дайте да и все. |
Дали...
Процедура выполняется, но дальше опять ругань на права, уже на другой строке.
Пакет закрыт - на что конкретно ругается - непонятно.
Точнее понятно, что пытается писать в какие-то таблицы и не может.
Таблицу с группами - добавил в права, но видимо еще какие-то объекты используются...
Под ИБС все работает... |
|
![](templates/subSilver/images/spacer.gif) |
lexus Профи
Вступление в Клуб: 28.09.2007
|
Пт Ноя 16, 2012 17:40   |
|
Полезность: Нет оценки
|
покажите что за ругань, все-таки. стек есть? |
|
![](templates/subSilver/images/spacer.gif) |
Gobur Профи
Вступление в Клуб: 06.11.2012
|
Чт Ноя 29, 2012 21:24   |
|
Полезность: Нет оценки
|
lexus пишет: | покажите что за ругань, все-таки. стек есть? |
по комментам спецов по ядру - в SECADMINE зашита проверка на то кто запускает, т.е. токо IBS может - так что даже если дать права - не прокатывает. Вроде как доп.защита от таких копателей) |
|
![](templates/subSilver/images/spacer.gif) |
|