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

Тема в разделе "Lotus - Программирование", создана пользователем seoman2, 12 мар 2010.

  1. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    Можно ли в документе, который открыт ридером (право чтения), повесить на кнопку лотус-скрипт агент, который будет иметь права автора? То есть сможет изменить какие то поля в документе.
     
  2. Klido

    Klido Гость

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

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    Зачем мне на сервере агент запускать?
    Он должен отрабатывать только по нажатию кнопки.
    Можно поточнее как это сделать?
    Чтобы у читателя документа отрабатывала кнопка изменяющая поле в документе.
     
  4. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Не может читатель изменять документ, это была бы большая дыра в безопасности)
    Запускай на сервере, от имени юзера который имеет права на редактирование.
     
  5. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    что мешает в кнопке взять агент и запустить Notesagent.RunonServer(doc.NoteID)
    А потом переоткрыть doc.
     
  6. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    А вот св-во агента "Run on behalf of" не поможет в данном случае? (Мне самому не доводилось попробовать, к сожалению)
     
  7. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    Кстати, как запустить агент под именем сервера?

    Не помогло. Это для веб доступа.
     
  8. maliy

    maliy Well-Known Member

    Регистрация:
    20 мар 2007
    Сообщения:
    135
    Симпатии:
    1
    to kizarek
    Если не трудно на примере(пример кода, или последовательность действий), покажи как запустить агент на сервере от имени пользователя которые имеет права на редактирование?
     
  9. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    maliy
    Код (LotusScript):
    Call db.GetAgent("Agent007").RunOnServer(doc.NoteID)
    Можно сделать так:
    1. Пользователь создаёт документ-запрос, в котором поля с NoteID обновляемого документа, а также обновляемые поля.
    2. Вызывает агента (см. выше), указывая NoteID документа-запроса.
    3. Агент по NoteID получает документ-запрос, из него получает NoteID обновляемого документа и выполняет необходимые операции.

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

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    Как подписать агент сервером?
     
  11. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    всю базу из домино администратора сервером подпишите
     
  12. maliy

    maliy Well-Known Member

    Регистрация:
    20 мар 2007
    Сообщения:
    135
    Симпатии:
    1
    to nvy
    Сделал агент - который получает Noteid обновляемого документа(то есть пользователь открывает документ и нажимает кнопку, по кнопке агенту передается Noteid открытого документа), и агент изменяет одно поле
    (Set it = doc.ReplaceItemValue("TestField","Change"
    Call doc.save(True,False))
    под те кто может изменять документ агент срабатывает, под теми кто не может редактировать документ агент поле не изменяет.
    Агент подписан тем кто может редактировать документ, для пущей уверенности подписал базу на сервере cert.id - ком
     
  13. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Видимо, документ не виден серверу. Я обычно добавляю в ACL роль [Admin], включаю в неё сервер, добавляю её в поля Readers всех документов с ограниченным доступом.
     
  14. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    вообще-то предлагалось подписать сервером: Sign, выбрать Active Server's ID.
    потом толкнуть adminp можно для ускорения: tell adminp proc all
    и проверьте поля Readers, тут nvy писал выше.
     
  15. maliy

    maliy Well-Known Member

    Регистрация:
    20 мар 2007
    Сообщения:
    135
    Симпатии:
    1
    to nvy
    документ под тем кто может редактировать документ виден серверу, а под тем кто не может редактировать не виден, странно как то......
    а можно по подробнее с ролью (как включить в нее сервер?, добавить в поле Readers c ограниченным доступом, немного не понятно с "ограниченным", по конкретнее если можно....)
    П.С. Задача - не дать пользователю отредактировать документ явно(то есть через UI), пользователь видит документ но редактировать его не может, и вот нужно изменить одно поле, вот с агентом неплохая идея, но почему не работает......

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

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    В ACL базы добавляем роль "[Admin]" (или другую — на Ваш вкус). Включаем в эту роль сервер. В поле читателей документа дополнительно к пользователю включаем эту роль, т.е. поле будет иметь значения "CN=вася в пупкин/O=ИБМ":"[Admin]". Пользователя в поле авторов документа не включаем, у сервера должны быть права менеджера. Кажись всё.
     
  17. maliy

    maliy Well-Known Member

    Регистрация:
    20 мар 2007
    Сообщения:
    135
    Симпатии:
    1
    вообще на форме в ридерах есть CN=вася в пупкин/O=ИБМ, есть отдельно поле ридерс в котором прописан сервер, у сервера права менеджера
     
  18. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    А в документе? Если сервер добавить в читатели в форме, нужно открыть и пересохранить документ. Далее, агент запускается на сервере (RunOnServer)? Если агент запускается на клиенте (Run), он будет выполняться с правами запустившего его.
     
  19. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    и не забываем, если это поле есть на форме (подформе), поставить галку Allow multiple values, если ее не было!!!
    А то больно плохо будет при уи-сохранении)
     
  20. maliy

    maliy Well-Known Member

    Регистрация:
    20 мар 2007
    Сообщения:
    135
    Симпатии:
    1
    Всем спасибо
    to nvy
    to OKEN
    Особая благодарность!!!
    to nvy - было просто Run.....Поставил RunOnServer все заработало.
     
Загрузка...

Поделиться этой страницей