• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Агенты

  • Автор темы Автор темы Hedg
  • Дата начала Дата начала
H

Hedg

В агентах не силён, так как никогда ещё не пользовался.

Возник вопрос, пользователи имет статус Reader но должны иметь возможность изменить занчения нескольких полей. Что бы не котролировать список полей на доступ и не давать автора пришла в голову идея использовать агент. Соотетственно вопрос, можно ли выполнить агент а режиме просмотра документа или это уже UI (соответственно агент не пашут), если да то как указать агенту изменить текущий документ.
 
Верно, если агент выполняется на сервере, то он может выполняться с правами дизайнера или самого сервера. Агенты работают и в режиме просмотра, и UI, только они изменяют "бэкенд" документа, док. придется пересохранять и обновлять передний план, т.е. UI. Агенту не нужно ничего указывать, его нужно вызвать по кнопке из самого документа, т.е. явно вызывать агента, когда требуется редактирование. Если имелось в виду, "как из агента получить доступ к текущему документу", то есть такая метода в скрипте:
Collecting all documents and all unprocessed documents, см. хелп дизайнера, первый необработанный и есть текущий.
 
А можно поподробнее про Unprocessed статус документа, а то что-то мои знания английского меня подводят, не могу никак понять я этого в хелпе.
Ещё вопрос если из вью открыт на просмотр документ(любой т.е не первый и не последний) то при создании колекции Unprocessed документов он будет первый???
 
Это способ получить доступ к коллекции документов вида. Если ни один из них не выбран, то единственный документ в коллекции будет текущий, на котором кликнули в виде. Если выбрано несколько, то коллекция их и содержит. Называется так потому, что в основном используется в агентах для получения списка документов, которые следует обработать. Вот пример из хелпа, который выбирает из вида текущий или все выбранные документы и проставляет им статус по условию.

Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
Set doc = collection.GetFirstDocument()
While Not(doc Is Nothing)
Set item = doc.GetFirstItem( "Approver" )
If item.Contains( session.UserName ) Then
doc.Approved = "Yes"
Call doc.Save( False, True )
End If
Set doc = collection.GetNextDocument(doc)
Wend
End Sub
 
Тоже есть глупый вопрос по агентам: а как указать агенту, от имени какой учетки он будет работать на сервере?
 
Для: LuMee
В свойствах агента выставляется, в последней вкладке от имени кого он будет работать.

Для: Fossil Code
А если агент запускается из открытого дока в режиме просмотра?? он будет единственнным в коллекции?
 
А если из открытого документа, то... да.
 
Тоже есть глупый вопрос по агентам: а как указать агенту, от имени какой учетки он будет работать на сервере?
До 6-ки - никак. Фоновый агент работает от имени своего автора.
В 6-ке появилась возможность запускать агент от чужого имени. Но на это надо получить особые права
 
Для: LuMee
В свойствах агента выставляется, в последней вкладке от имени кого он будет работать.
Забыл в свое время отписаться: не нашел я ничего похожего в свойствах агента. На последней вкладке только всякие ID, редактировать нечего. Кстати, у меня Лотус 5
 
Для: Hedg
Почему бы не использовать в нужных формах флаг
"Available to Public Access Users" и сделать описанные в хелпе добавления к формам?
А нужным пользователям просто дать право на редактирование публичных документов.
Примечание: после включения этого флага в св-вах формы надо в ранее созданные документы добавить поле $PublicAccess="1"
 
Для: Hedg
Почему бы не использовать в нужных формах флаг
"Available to Public Access Users" и сделать описанные в хелпе добавления к формам?
А нужным пользователям просто дать право на редактирование публичных документов.
Гм.. В исходной постановке требовалось обеспечить доступ к некоторым полям, а не всему документу. Если, конечно, я правильно понял автора
 
Для: Constantin A Chervonenko
Ну, учитывая, что доступ Reader не предполагает возможности создания собственных форм, что существуют разделы с управляемым доступом, и что не обязательно всем разрешать создание агентов, можно и ограничить доступ к полям документа :lol:
 
Для: Constantin A Chervonenko
<!--QuoteBegin-Constantin A Chervonenko+12:03:2007, 23:55 -->
<span class="vbquote">(Constantin A Chervonenko @ 12:03:2007, 23:55 )</span><!--QuoteEBegin-->... в ЭТОЙ базе. А в соседних? А SmartIcon? Не.. если действительно речь идет о защите.
[snapback]58826" rel="nofollow" target="_blank[/snapback]​
[/quote]В общем, да - "соседние" базы не обязательно подконтрольны менеджеру текущей.
Опять мы возвращаемся к вашей старой мудрости, что "надо лучше проектировать" :)
Ну, а раз не спроектировали лучше, то обходим препятствия в зависимости от текущих потребностей безопасности :P
 
Пытаюсь из QuerySave запустить агента
Код:
.................
If Len(doc.FieldGetText("RunAgent"))=1 Then
Set agent = db.GetAgent("AuthorClear")
Call agent.RunOnServer
End If

И не получается, пишет Notes error: Unsupported trigger and search in thr background or embedded agent
 
Решил пока проблему используя шедулер, но там минимальное время срабатывания 5 минут, никак нельзя сделать меньше???
 
Можно, в администраторе в документе сервера, закладка Notes.ini Settings
поиграйтесь с AMGR_ xxxx так точно не помню какой параметр, там подсказки есть, помню шо по дефолту - 30 минут
 
Для: Medevic
А как тогда он работаь будет??? Какие условия его срабатывания???
 
<!--QuoteBegin-Hedg+19:03:2007, 17:07 -->
<span class="vbquote">(Hedg @ 19:03:2007, 17:07 )</span><!--QuoteEBegin-->А как тогда он работаь будет??? Какие условия его срабатывания???
[snapback]59479" rel="nofollow" target="_blank[/snapback]​
[/quote]
Шедульный агент. Время срабатывания - never. Цель - все документы.
Запускаешь методом RunOnServer. В параметрах указываешь NoteID текущего документа.
В агенте получаешь этот документ методом: notesDatabase.GetDocumentByID(notesAgent.ParameterDocID)

И обрабатываешь его.
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab