Запуск агента с правами автора

seoman2

Lotus team
17.02.2010
473
1
#1
Можно ли в документе, который открыт ридером (право чтения), повесить на кнопку лотус-скрипт агент, который будет иметь права автора? То есть сможет изменить какие то поля в документе.
 
K

Klido

#2
можно запустить агент на сервере (при наличии прав), подписанный тем, кто имеет права изменять документ
 

seoman2

Lotus team
17.02.2010
473
1
#3
Зачем мне на сервере агент запускать?
Он должен отрабатывать только по нажатию кнопки.
Можно поточнее как это сделать?
Чтобы у читателя документа отрабатывала кнопка изменяющая поле в документе.
 

Kizarek86

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

TIA

:-)
Lotus team
15.05.2009
790
3
#6
Можно ли в документе, который открыт ридером (право чтения), повесить на кнопку лотус-скрипт агент, который будет иметь права автора? То есть сможет изменить какие то поля в документе.
А вот св-во агента "Run on behalf of" не поможет в данном случае? (Мне самому не доводилось попробовать, к сожалению)
 

maliy

Well-known member
20.03.2007
168
2
#8
to kizarek
Если не трудно на примере(пример кода, или последовательность действий), покажи как запустить агент на сервере от имени пользователя которые имеет права на редактирование?
 

nvyush

Lotus team
22.04.2009
2 317
0
#9
maliy
Код:
Call db.GetAgent("Agent007").RunOnServer(doc.NoteID)
Можно сделать так:
1. Пользователь создаёт документ-запрос, в котором поля с NoteID обновляемого документа, а также обновляемые поля.
2. Вызывает агента (см. выше), указывая NoteID документа-запроса.
3. Агент по NoteID получает документ-запрос, из него получает NoteID обновляемого документа и выполняет необходимые операции.

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

hosm

* so what *
18.05.2009
2 442
6
#11
всю базу из домино администратора сервером подпишите
 

maliy

Well-known member
20.03.2007
168
2
#12
to nvy
Сделал агент - который получает Noteid обновляемого документа(то есть пользователь открывает документ и нажимает кнопку, по кнопке агенту передается Noteid открытого документа), и агент изменяет одно поле
(Set it = doc.ReplaceItemValue("TestField","Change"
Call doc.save(True,False))
под те кто может изменять документ агент срабатывает, под теми кто не может редактировать документ агент поле не изменяет.
Агент подписан тем кто может редактировать документ, для пущей уверенности подписал базу на сервере cert.id - ком
 

nvyush

Lotus team
22.04.2009
2 317
0
#13
to nvy
Сделал агент - который получает Noteid обновляемого документа(то есть пользователь открывает документ и нажимает кнопку, по кнопке агенту передается Noteid открытого документа), и агент изменяет одно поле
(Set it = doc.ReplaceItemValue("TestField","Change"
Call doc.save(True,False))
под те кто может изменять документ агент срабатывает, под теми кто не может редактировать документ агент поле не изменяет.
Агент подписан тем кто может редактировать документ, для пущей уверенности подписал базу на сервере cert.id - ком
Видимо, документ не виден серверу. Я обычно добавляю в ACL роль [Admin], включаю в неё сервер, добавляю её в поля Readers всех документов с ограниченным доступом.
 

maliy

Well-known member
20.03.2007
168
2
#15
to nvy
документ под тем кто может редактировать документ виден серверу, а под тем кто не может редактировать не виден, странно как то......
а можно по подробнее с ролью (как включить в нее сервер?, добавить в поле Readers c ограниченным доступом, немного не понятно с "ограниченным", по конкретнее если можно....)
П.С. Задача - не дать пользователю отредактировать документ явно(то есть через UI), пользователь видит документ но редактировать его не может, и вот нужно изменить одно поле, вот с агентом неплохая идея, но почему не работает......

Добавлено: To OKEN
база подписана - Sign, выбрать Active Server's ID
 

nvyush

Lotus team
22.04.2009
2 317
0
#16
to nvy
документ под тем кто может редактировать документ виден серверу, а под тем кто не может редактировать не виден, странно как то......
а можно по подробнее с ролью (как включить в нее сервер?, добавить в поле Readers c ограниченным доступом, немного не понятно с "ограниченным", по конкретнее если можно....)
П.С. Задача - не дать пользователю отредактировать документ явно(то есть через UI), пользователь видит документ но редактировать его не может, и вот нужно изменить одно поле, вот с агентом неплохая идея, но почему не работает......
В ACL базы добавляем роль "[Admin]" (или другую — на Ваш вкус). Включаем в эту роль сервер. В поле читателей документа дополнительно к пользователю включаем эту роль, т.е. поле будет иметь значения "CN=вася в пупкин/O=ИБМ":"[Admin]". Пользователя в поле авторов документа не включаем, у сервера должны быть права менеджера. Кажись всё.
 

maliy

Well-known member
20.03.2007
168
2
#17
вообще на форме в ридерах есть CN=вася в пупкин/O=ИБМ, есть отдельно поле ридерс в котором прописан сервер, у сервера права менеджера
 

nvyush

Lotus team
22.04.2009
2 317
0
#18
вообще на форме в ридерах есть CN=вася в пупкин/O=ИБМ, есть отдельно поле ридерс в котором прописан сервер, у сервера права менеджера
А в документе? Если сервер добавить в читатели в форме, нужно открыть и пересохранить документ. Далее, агент запускается на сервере (RunOnServer)? Если агент запускается на клиенте (Run), он будет выполняться с правами запустившего его.
 

hosm

* so what *
18.05.2009
2 442
6
#19
В поле читателей документа дополнительно к пользователю включаем эту роль
и не забываем, если это поле есть на форме (подформе), поставить галку Allow multiple values, если ее не было!!!
А то больно плохо будет при уи-сохранении)
 

maliy

Well-known member
20.03.2007
168
2
#20
Всем спасибо
to nvy
to OKEN
Особая благодарность!!!
to nvy - было просто Run.....Поставил RunOnServer все заработало.