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

Тема в разделе "Lotus - Программирование", создана пользователем Kizarek86, 16 сен 2008.

  1. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Подскажите как реализовать?

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

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

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

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    "Run on Behalf of" в проперятх агента на второй заклкдке
    Оно?
     
  3. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Omh
    Да вот как бы оно, но не работает. пробовал уже. Нужны ещё какие нибудь настройки в БД или на сервере?
     
  4. fedotxxl

    fedotxxl Well-Known Member

    Регистрация:
    9 ноя 2005
    Сообщения:
    614
    Симпатии:
    0
    RunOnServer исполняется от имени подписавшего
     
  5. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Run on behalf, если не ошибаюсь, требует наличие прав на запуск таких агентов.
     
  6. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Server conf doc / security / Sign agents to run on behalf of someone else

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

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

    dobozy Гость

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

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

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

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

    D!m@n Гость

    Да нет, на клиенте такие агенты тоже работают.
     
  9. dobozy

    dobozy Гость

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

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

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Никто незнает как запустить агент на JavaScript? только не по Url....

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

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    вот если бы ты еще толком описал, что ты хочешь сделать...
    агент можно запустить либо get (по url) либо post (form.action + submit, click() по кнопке с собакой @Command(ToolsRunMacro)) запросом
     
  12. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    кликом запустил, жаль только в FF не работает..)
     
  13. D!m@n

    D!m@n Гость

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

    dobozy Гость

    Я тоже провёл и таки да :).
     
  15. Kizarek86

    Kizarek86 Lotus team
    Lotus team

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

    Alex_Sun Гость

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

    dobozy Гость

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

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

     
  18. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    ФФ - файрфокс? как запускал, каким кодом? думаю, что проблема не в браузере, а в реализации твоего приложения...


    даже читать не должны?! О_о интересно...

    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.


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

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Akupaka
    как вот раньше не такой уровень доступа внимания не обратил))) спасибо)

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

    dobozy Гость

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

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