| Предыдущая тема :: Следующая тема   | 
	
	
	
		| Автор | 
		Сообщение | 
	
	
		Gobur Профи
 
  Вступление в Клуб: 06.11.2012
  | 
		
			
				 Сб Ноя 10, 2012 06:30   Смена группы доступа программным путем | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				Возможно ли вообще такое? Доступ в ИБСО касательно ритейла как то не очень удобно организован. Поясню. Есть много городов, в каждом городе много отделений. Работники отделений города работают по плавающему графику.
 
 
Если например использовать группу с доступом по рекивзиту подразделения (например операционист должен видеть документы только своего подразделения, ну и счета касс тоже), то делаю группы Отделение1, Отделение2 (там протыкнуты ТБП и отделения).
 
 
Соотвественно когда идет ротация - надо зайти в каждого перепривязать эту группу, в пользователях выставить подразделение? Кто-нибудь решал эту проблему или чисто так и сидеть перетаскивать? В идеале бы пользователь должен выбирать отделение где он сегодня из списка доступных (как В RBS). Буду благодарен за любые идеи. Сидеть каждый день даже на 100 человек (а их больше) заниматься перетаскиванием групп - это жесткач просто. | 
			 
		  | 
	
	
		  | 
	
	
		devor Профи
 
  Вступление в Клуб: 13.02.2012
  | 
		
			
				 Сб Ноя 10, 2012 07:40   Re: Смена группы доступа программным путем | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | Gobur пишет: | 	 		  | Возможно ли вообще такое?  | 	  
 
Запрограммировать можно все, за исключением искусственного интеллекта.
 
Смотри пакет SECURITY, смотри в БД структуру таблиц доступа. | 
			 
		  | 
	
	
		  | 
	
	
		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 пишет: | 	 		  | Возможно ли вообще такое? . | 	 
  | 
			 
		  | 
	
	
		  | 
	
	
		Gobur Профи
 
  Вступление в Клуб: 06.11.2012
  | 
		
			
				 Пн Ноя 12, 2012 08:22   Re: Смена группы доступа программным путем | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | molokov пишет: | 	 		  этого будеть достаточно чтобы самому организовать то что нужно.
 
 
SecAdmin.Insert_User_To_Group(логин пользователя,'короткое имя группы');
 
 
  SecAdmin.Delete_User_From_Group(логин пользователя,'короткое имя группы');
 
 
узнать какие права есть у пользователя :
 
 
 
 	  | Gobur пишет: | 	 		  | Возможно ли вообще такое? . | 	 
  | 	  
 
 
Спасибо, единственно не понял нужен ли после этого дисконнект для обновления контекста?
 
 
Вообще вроде бы в операции редактирования пользователя есть об этом ) | 
			 
		  | 
	
	
		  | 
	
	
		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)||'''
 
    )%>');      
 
 | 	  
 
 
У меня сомнение, правильно ли указан экземпляр для изменения... | 
			 
		  | 
	
	
		  | 
	
	
		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; | 	 
  | 
			 
		  | 
	
	
		  | 
	
	
		garsia Участник со стажем
 
  Вступление в Клуб: 01.11.2012
  | 
		
			
				 Чт Ноя 15, 2012 07:48   Re: Смена группы доступа программным путем | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				| Спасибо! ) | 
			 
		  | 
	
	
		  | 
	
	
		garsia Участник со стажем
 
  Вступление в Клуб: 01.11.2012
  | 
		
			
				 Пт Ноя 16, 2012 09:12   Re: Смена группы доступа программным путем | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | molokov пишет: | 	 		  
 
SecAdmin.Insert_User_To_Group(логин пользователя,'короткое имя группы');
 
  SecAdmin.Delete_User_From_Group(логин пользователя,'короткое имя группы');
 
 	  | Gobur пишет: | 	 		  | Возможно ли вообще такое? . | 	 
  | 	  
 
 
Спасибо за наводку, все работает! - Но только под админом.
 
 
Делаю то же самое, для созданного с нуля пользователя - ругается на отсутствие прав на эти операции.
 
Пакета SecAdmin в словаре нет, хотя обращения к нему есть в других операциях - кадры, пластики...
 
Как дать доступ к этому пакету не администратору, штатными средствами? | 
			 
		  | 
	
	
		  | 
	
	
		lexus Профи
 
  Вступление в Клуб: 28.09.2007
  | 
		
			
				 Пт Ноя 16, 2012 09:40    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				Дать ему оракловую роль IBS_UADMIN.
 
Либо в админе доступа поставить галку Администратор доступа этому пользователю | 
			 
		  | 
	
	
		  | 
	
	
		Gobur Профи
 
  Вступление в Клуб: 06.11.2012
  | 
		
			
				 Пт Ноя 16, 2012 09:47    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | lexus пишет: | 	 		  Дать ему оракловую роль IBS_UADMIN.
 
Либо в админе доступа поставить галку Администратор доступа этому пользователю | 	  
 
штатными токо галочку поставить? Но тут проблема с лицензиями может быть . Если же чисто через оракл раздавать - тогда уж роли Connect проще дать гранты на запуск пакета (но как это при обновлениях скажется?) | 
			 
		  | 
	
	
		  | 
	
	
		garsia Участник со стажем
 
  Вступление в Клуб: 01.11.2012
  | 
		
			
				 Пт Ноя 16, 2012 09:50    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | lexus пишет: | 	 		  Дать ему оракловую роль IBS_UADMIN.
 
Либо в админе доступа поставить галку Администратор доступа этому пользователю | 	  
 
 
Ну это уже перебор... Слипнеца у него! ))
 
Мы посоветовались, можно попробовать просто средствами Oracle дать грант на пакедж роли Connect.
 
Хотелось бы узнать, нет ли штатного способа в ИБСО. | 
			 
		  | 
	
	
		  | 
	
	
		lexus Профи
 
  Вступление в Клуб: 28.09.2007
  | 
		
			
				 Пт Ноя 16, 2012 11:36    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				штатными спрашивали же  
 
а так, да - хоть пользователю грант на исполнение пакета дайте да и все. | 
			 
		  | 
	
	
		  | 
	
	
		garsia Участник со стажем
 
  Вступление в Клуб: 01.11.2012
  | 
		
			
				 Пт Ноя 16, 2012 12:04    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | lexus пишет: | 	 		  штатными спрашивали же  
 
а так, да - хоть пользователю грант на исполнение пакета дайте да и все. | 	  
 
 
Дали...
 
Процедура выполняется, но дальше опять ругань на права, уже на другой строке.
 
Пакет закрыт - на что конкретно ругается - непонятно.
 
Точнее понятно, что пытается писать в какие-то таблицы и не может.
 
Таблицу с группами - добавил в права, но видимо еще какие-то объекты используются...
 
Под ИБС все работает... | 
			 
		  | 
	
	
		  | 
	
	
		lexus Профи
 
  Вступление в Клуб: 28.09.2007
  | 
		
			
				 Пт Ноя 16, 2012 17:40    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				| покажите что за ругань, все-таки. стек есть? | 
			 
		  | 
	
	
		  | 
	
	
		Gobur Профи
 
  Вступление в Клуб: 06.11.2012
  | 
		
			
				 Чт Ноя 29, 2012 21:24    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | lexus пишет: | 	 		  | покажите что за ругань, все-таки. стек есть? | 	  
 
 
по комментам спецов по ядру - в SECADMINE зашита проверка на то кто запускает, т.е. токо IBS может - так что даже если дать права - не прокатывает. Вроде как доп.защита от таких копателей) | 
			 
		  | 
	
	
		  | 
	
	
		 |