Gogan.exe
Чтобы организовать грамотную авторизацию для веб-бд, необходимо воспользоваться списком контроля доступа (группы, роли, уровень доступа), полями authors и readers на форме в документе, агентами (Agents)(по желанию).
1. File - Database - Access Control - Advanced - Maximum Internet name and password. (Я указываю обычно уровень Author). Рекомендуемый источник для ознакомления в helpXX_designer.nsf: APPLICATION MANAGEMENT - Maximum Internet name-and-password access.
2. В ACL необходимо занести группы пользователей (Groups) из серверной адрессной книги (names.nsf). Для каждой группы пользователей необходимо указать: тип пользователя (User type) (Я указываю обычно Person Group), общий уровень доступа (Access) (Я указываю обычно Author со следующими привилегиями: Create document, Delete documents, Create LotusScript/Java agents, Write public documents, Replicate or copy documents) и роли (Я указываю обычно для каждой группы доступа одну роль). Рекомендуемый источник для ознакомления в helpXX_designer.nsf: APPLICATION MANAGEMENT - Security in an application.
3. На форме докумена необходимо создать скрытые поля authors и readers с атрибутом computed when composed. Далее значения этих полей изменяются в сответствие с бизнес-логикой конкретного приложения. (Например, в поле authors располагаются роли: "[coordinator]" : "[consultant]", а вполе readers: "[request_author]"). Это означает, что пользователи с ролями "coordinator" или "consultant" будут иметь возможность редактировать документ данной формы, а пользователи с ролью "request_author" - только читать. Рекомендуемый источник для ознакомления в helpXX_designer.nsf: см. пункт 2.
4. Создать на форме кнопку, которая бы выполняла сохранение документа. Для этого необходимо, чтобы она выполняла по нажатию следующую инструкцию java script:
Код:
document.forms[0].submit()
Далее после этого вызывается событие формы WebQuerySave, где необходимо указать имя агента, который будет обрабатывать событие сохрания документа, например: @Command([ToolsRunMacro]; "administer"), где "administer" - имя агента. Рекомендуемый источник для ознакомления в helpXX_designer.nsf: PROGRAMMING DOMINO FOR WEB APPLICATIONS.
5. Создать агент (Agent), который бы обрабатывал событие сохранения документа (см. пункт 4). Например:
Код:
Sub SaveChanges(doc As notesDocument)
Call doc.Save(True, True)
Call doc.ComputeWithForm(False, False)
Print "[" + profile.db_directory(0) + "/" + db.FileName + "/0/" + doc.UniversalID + "?OpenDocument]"
End Sub
Приведенный в примере агент сохраняет документ doc и переоткрывает его в веб-броузере в текущем окне.
Агент должен быть подписан пользователем с высоким уровнем доступа и привилегиями в базе данных или в серверной адрессной книге, например, мэнеджером (Manager).