Запуск агента от имени другого пользователя.

Kizarek86

Lotus team
20.07.2007
864
4
#1
Подскажите как реализовать?

Проблема в следующем. Есть 2е базы: база1 и база2.

Через базу1 агентом есть возможность генерить документы в базу2. При этом пользователи которые создают документ в базе2 не должны иметь к ней доступа (либо частично, только на чтение, либо вообще не иметь).

Какие есть варианты реализовать такое?
 

Omh

Lotus team
04.07.2007
2 210
1
#2
"Run on Behalf of" в проперятх агента на второй заклкдке
Оно?
 

Kizarek86

Lotus team
20.07.2007
864
4
#3
Omh
Да вот как бы оно, но не работает. пробовал уже. Нужны ещё какие нибудь настройки в БД или на сервере?
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#6
Run on behalf, если не ошибаюсь, требует наличие прав на запуск таких агентов.
Server conf doc / security / Sign agents to run on behalf of someone else

kizarek, кроме того, у того, от чьего имени запускается тоже должны быть соотв. права к базе2...
и есть также другие ограничения на использование этой фичи - см. справку!
а еще надо смотреть, что пишется в логах!

зы: вот только я не понял, вроде эта Run on behalf работает только в шедульных агентах... могу ошибаться, не юзал, а в хелпе толком не указано или я не увидел :)
 
D

dobozy

#7
Насколько я понимаю, если пользователь запускает агент ручками, то агент работает не на сервере и соотвественно Run on behalf тут не пляшет.
Я могу ошибаться тоже, но по логике, права настраиваемые в серверном документе касаются шедульных агентов и может еще web, но не толстого клиента.

ИМХО, самых оптимальный вариант делать
Call notesAgent.RunOnServer(NoteID)

NotedID должен соответсвовать какому-то параметрическому документу, в который вы запихнёте инструкции что нужно сделать.
Тут уже можно проявлять фантазию.

В данном случае управление будет передано в месте с номером дока серверу.
В агенты вы из контеста вытащите нужный док и сделаете что нужно.
И соответсвенно вся операция будет производиться от имени подписавшего агент, т.е. Вас.
 
D

dobozy

#9
Цитата(Akupaka @ 16:09:2008 - 16:01)
вроде эта Run on behalf работает только в шедульных агентах...
Да нет, на клиенте такие агенты тоже работают.
Опять же, рассуждая логически, наверное, всё-таки на клиенте это не работает.
Код выполняется на клиенте и сессия открыта под id пользователя. Т.е. клиент может только проверять на подлинность подписи тех, от чъего емени запускается агент, но передача обработанной инфы идёт на сервер от его имени и тут уже сервер проверить может только подлинность текущей сессии.
В web агентах ситуация другая, так как он тут уже все проверки на себя берёт сервер и отрабатывает агент на сервере. Тоже и с шедульными агентами.

Так что меня кажется, что вы ошибаетесь.
 

Kizarek86

Lotus team
20.07.2007
864
4
#10
Никто незнает как запустить агент на JavaScript? только не по Url....

Ситуация такая, есть поле1, в зависимости от его значения, в поле2 тоже свои значения. делается это лотусевым агентом, а вот как его вызывать без клика на кнопке с собакой фиг знает)
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#11
вот если бы ты еще толком описал, что ты хочешь сделать...
агент можно запустить либо get (по url) либо post (form.action + submit, click() по кнопке с собакой @Command(ToolsRunMacro)) запросом
 
D

D!m@n

#13
Опять же, рассуждая логически, наверное, всё-таки на клиенте это не работает.
Код выполняется на клиенте и сессия открыта под id пользователя. Т.е. клиент может только проверять на подлинность подписи тех, от чъего емени запускается агент, но передача обработанной инфы идёт на сервер от его имени и тут уже сервер проверить может только подлинность текущей сессии.
В web агентах ситуация другая, так как он тут уже все проверки на себя берёт сервер и отрабатывает агент на сервере. Тоже и с шедульными агентами.

Так что меня кажется, что вы ошибаетесь.
Да, Вы правы.
Провел эксперимент. Агент on behalf of с клиента запускается и отрабатывает, но только от имени юзера, его запустившего.
 

Kizarek86

Lotus team
20.07.2007
864
4
#15
Значить идея в провале)))) Как тогда лучше ограничить доступ группе пользователей которые агентом могут создавать документы, при этом их доступ на этом должен быть ограничен? т.е. даже читать они не должны базу.
 
A

Alex_Sun

#16
Чёт не понял, помойму всё достаточно просто
Создать агент с указанием "on behalf of" и запускать его методом RunOnServer
Подписавший должен быть указан в поле "Sign agents to run on behalf of someone else" и фсё, делай всё, что хочеш в пределах прав от чего имени запускаешь, я запускал от имени сервера.
В моём случае агент обновлял формулу колонки, а для этого нужен дизайнер, а надо было чтобы все могли это сделать. Выручи серверный агент с "on behalf of"
 
D

dobozy

#17
А чем вам не подходит вариант, который я писал раньше?
Если вы имеете права пускать агенты на сервере, то можно и без Run on Behalf, так как он запуститься от вашего имени, если же это неприемлемо, чтобы доки создавались и апдейтились под вами, то следуйте инструкциям Alex_Sun.

P.S. Просто 1-ый вариант работает еще и под 5-ку.

Насколько я понимаю, если пользователь запускает агент ручками, то агент работает не на сервере и соотвественно Run on behalf тут не пляшет.
Я могу ошибаться тоже, но по логике, права настраиваемые в серверном документе касаются шедульных агентов и может еще web, но не толстого клиента.

ИМХО, самых оптимальный вариант делать
Call notesAgent.RunOnServer(NoteID)

NotedID должен соответсвовать какому-то параметрическому документу, в который вы запихнёте инструкции что нужно сделать.
Тут уже можно проявлять фантазию.

В данном случае управление будет передано в месте с номером дока серверу.
В агенты вы из контеста вытащите нужный док и сделаете что нужно.
И соответсвенно вся операция будет производиться от имени подписавшего агент, т.е. Вас.
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#18
кликом запустил, жаль только в FF не работает..)
ФФ - файрфокс? как запускал, каким кодом? думаю, что проблема не в браузере, а в реализации твоего приложения...


Значить идея в провале)))) Как тогда лучше ограничить доступ группе пользователей которые агентом могут создавать документы, при этом их доступ на этом должен быть ограничен? т.е. даже читать они не должны базу.
даже читать не должны?! О_о интересно...

Access levels for a database:
- Depositor
Create documents
Users who only need to contribute documents, but who do not need to read or edit their own or other users' documents. For example, use Depositor access for a ballot box application.


зы: и агенты не нужны, получается...
 

Kizarek86

Lotus team
20.07.2007
864
4
#19
Akupaka
как вот раньше не такой уровень доступа внимания не обратил))) спасибо)

с ФФ тоже разобрался, просто вычитал что метод click() в ФФ (да ет Лиса) некорректно работает))
 
D

dobozy

#20
Akupaka
как вот раньше не такой уровень доступа внимания не обратил))) спасибо)

с ФФ тоже разобрался, просто вычитал что метод click() в ФФ (да ет Лиса) некорректно работает))
Да, кстати депозитор часто тожу рулит, но есть один нюанс.
Если юзер депозитор, то он доков не видит и соотвественно если нужно, например, при записи документа проверить его на уникальность, то вы этого не сделаете, так как ничего не видите фактически в базе и не сможете сравнить новый док с теми, что уже в базе.
Если это некритично, то тогда Depositor.