Язык @-формул в LotusDomino R 6.

         

Функции, работающие с правами доступа


@DbManager

Область применения: нельзя использовать в формулах отбора и колонок.

Возвращает список групп, пользователей и серверов, имеющих к текущей базе доступ менеджера.

Пример. Могло быть возвращено "OtherDomainServers" : "CN=Evgeny V Polyakov/OU=ITDep/OU=Technic/O=Center_TV/C=RU" : "LocalDomainServers"

@DbManager

J @UserAccess( сервер : файл_базы; флаги )

Область применения: нельзя использовать в формулах отбора, колонок, фоновых агентов и всплывающих окон. В Domino R 4.х автоматически заменяется на функцию @V4UserAccess. Для локальных баз в варианте синтаксиса без второго параметра и с опущенным в ACL флагом "Enforce a consistent Access Control List across all replicas of this database." (использовать единый список управления доступом для всех реплик) всегда возвращает значение 6:1:1:1:1:1:1:1:1. Если пользователь не имеет доступа к базе, он получит сообщение: "You are not authorized to perform that operation." (Вы неавторизованы для выполнения данной операции). Не работает с оператором Evaluate LotusScript.

Возвращает числовой список, элементы которого позволяют определить уровень доступа текущего пользователя к указанной БД. Пустая строка в качестве сервер означает, что база расположена локально.

Необязательный параметр флаги позволяет определить уровень доступа для конкретного элемента, а не получать весь список доступа, и затем выделять из него требуемое значение. Параметр флаги

может представлять собой список, состоящий из следующих значений:

  • [ACCESSLEVEL] – возвращает число от 1 до 6, определяющее уровень доступа пользователя к БД. При этом 1 соответствует уровню доступа Депозитора, 2 - Читателя, 3 - Автора, 4 - Редактора, 5 – Дизайнера и 6 – Менеджера;
  • [CREATEDOCUMENTS] – возвращает 1 (True), если пользователь может создавать документы, или 0 (False) в противном случае;
  • [DELETEDOCUMENTS] – возвращает 1 (True), если пользователь может удалять документы, или 0 (False) в противном случае;
  • [CREATEPERSONALAGENTS] – возвращает 1 (True), если пользователь может создавать личные агенты, или 0 (False) в противном случае;



  • [CREATEPERSONALFOLDERSANDVIEWS] – возвращает 1 (True), если пользователь может создавать личные виды/папки, или 0 (False) в противном случае;


  • [CREATESHAREDFOLDERSANDVIEWS] – возвращает 1 (True), если пользователь может создавать общие виды/папки, или 0 (False) в противном случае;


  • [CREATELOTUSSCRIPTJAVAAGENTS] – возвращает 1 (True), если пользователь может создавать агентов на языках LotusScript/Java, или 0 (False) в противном случае;


  • [READPUBLICDOCUMENTS] – возвращает 1 (True), если пользователь может читать общие документы, или 0 (False) в противном случае;


  • [WRITEPUBLICDOCUMENTS] – возвращает 1 (True), если пользователь может создавать общие документы, или 0 (False) в противном случае;


  • [REPLICATEORCOPYDOCUMENTS] – возвращает 1 (True), если пользователь может реплицировать или копировать документы, или 0 (False) в противном случае.


  • Если несколько флагов задано в виде списка, то возвращается список значений, соответствующих указанным флагам. Если не выбран ни один флаг, то возвращаемый список имеет формат:

    [AccessLevel] : [CreateDocuments] : [DeleteDocuments] : [CreatePersonalAgents] : [CreatePersonalFoldersAndViews] : [CreateSharedFoldersAndViews] : [CreateLotusScriptJavaAgents] : [ReadPublicDocuments] : [WritePublicDocuments]

    Обратите внимание, что значение для [REPLICATEORCOPYDOCUMENTS]

    в варианте синтаксиса без второго параметра отсутствует.

    При использовании функции @UserAccess в Lotus Notes/Domino R 4 система автоматически конвертирует функцию к @V4UserAccess. Для использования функции @UserAccess в Domino R 5 или выше необходимо привести формат базы к версии R 5. В БД формата R 5 или выше, использующихся в R 4 необходимо использовать @V4UserAccess.

    Пример 1. Может возвратить 2:0:0:0:0:0:0:1:1, если текущий пользователь имеет доступ к общей  адресной книге, как читатель, и не может не создавать новых и удалять существующие документы, а также не может создавать личных и общих агентов, личных и общих папок/видов, но может создавать и читать общие документы .



    @UserAccess( @Subset( @MailDbName; 1 ) : "Names.nsf" )

    Пример 2. В локальной БД для текущего пользователя в ACL установлены следующие опции Editor (редактор), флаг «Replicate or copy documents» (реплицировать или копировать документы) опущен, а «Enforce a consistent Access Control List across all replicas of this database.» (распространить содержимое ACL на все реплики текущей БД) – поднят. Тогда формула поля, приведенная ниже, вернет следующее значение «0 : 4».

    @UserAccess(@DbName; [ReplicateOrCopyDocuments]: [AccessLevel] )

    @UserRoles

    Область применения: нельзя использовать в формулах отбора, колонок и фоновых агентов. Предназначена для использования в БД, расположенных на сервере, или для локальных баз данных с установленным свойством "Enforce a consistent Access Control List across all replicas" (использовать единый список управления доступом для всех реплик). Для локальных баз данных без этого свойства всегда возвращает пустую строку.

    Возвращает текстовый список имен ролей, на которые в списке управления доступом текущей базы назначен текущий пользователь. Имена ролей заключаются в квадратные скобки. Когда БД открывается Web-пользователем, то в возвращаемом значении функции добавляется элемент $$WebClient.

    Пример. При использовании в формуле видимости объекта, скрывает его для пользователей неназначенных на роль Supervisor.

    @IsNotMember( "[Supervisor]"; @UserRoles )

    @UserNamesList

    Область применения: нельзя использовать в формулах отбора, колонок, фоновых агентов, заголовка окна, навигатора и области размещения. Предназначена для использования в БД, расположенных на сервере, или для локальных БД с установленным свойством "Enforce a consistent Access Control List across all replicas" (Использовать единый список управления доступом для всех реплик). Для локальных БД без этого свойства всегда возвращает пустую строку.

    Функция возвращает текстовый список, содержащий уровни доступа текущего пользователя к текущей базе данных. Возвращаемый список полностью соответствует таблице, появляющейся в окне при нажатии на сектор уровней доступа строки состояния главного окна Lotus Notes.



           


    Рис. 6.10 Сектор уровней доступа к текущей базе и окно, появляющееся при нажатии на сектор

    Пример. Функция может возвратить список "CN=Evgeny V Polyakov/OU=ITDep/OU=Technic/O=Center_TV/C=RU" : "Evgeny V Polyakov" :  "*" : "*/OU=ITDep/OU=Technic/O=Center_TV/C=RU" : "*/OU=Technic/O=Center_TV/C=RU" : "*/O=Center_TV/C=RU" : "*/C=RU" : "[Supervisor]" : "[User]".

    @UserNamesList

    J @ServerAccess( [флаг]; имя_пользователя;

                                          имя_сервера)

    Область применения: нельзя использовать в формулах области размещения.

    Функция используется для определения уровня администраторского доступа указанного пользователя к указанному серверу. Возвращаемое значение 1 (True) – если режим доступа соответствующий флагу поддерживается, и 0 (False) – в противном случае.

    Под уровнями административного доступа в контексте функции @ServerAccess подразумевается параметры сервера, которые определяются в БД Domino Directory в документе Server на закладке Security в секциях Administrators и Server Access, а также в документе Configuration Settings на закладке Router/SMTP -> Message Tracking в секции Access Settings.



    Рис. 6.11  Секция Administrators закладки Security документа Server



    Рис. 6.12  Секция Server Access закладки Security документа Server



    Рис. 6.13  Секция Access Settings закладки Router/SMTP -> Message Tracking документа Configuration Settings

    Функция @ServerAccess позволяет работать со следующими флагами:

    • [ACCESS] – проверяет, имеет ли пользователь права администратора для данного сервера;


    • [CREATEDATABASE] – проверяет, может ли пользователь создавать БД на указанном сервере;


    • [CREATEREPLICA] - проверяет может ли пользователь создавать реплики БД на указанном сервере;


    • [CREATETEMPLATE] – проверяет, может ли пользователь создавать БД-шаблоны на указанном сервере;


    • [DATABASEACCESS] – проверяет, имеет ли пользователь права администратора на уровне БД для данного сервера;




    • [FULLACCESS] – проверяет, имеет ли пользователь права неограниченного администратора для данного сервера;


    • [REMOTEACCESS] – проверяет, может ли пользователь работать с удаленной консолью сервера;


    • [RESTRICTEDSYSTEMACCESS] – проверяет, имеет ли пользователь права администратора для данного сервера, соответствующие возможностям запуска ограниченного набора системных команд;


    • [SYSTEMACCESS] – проверяет, имеет ли пользователь права администратора для данного сервера, соответствующие возможностям запуска команд операционной системы;


    • [TRACKMESSAGE] – проверяет, имеет ли пользователь права отслеживания почтовых сообщений без просмотра содержимого поля Subject;


    • [TRACKMESSAGESUBJECT] – проверяет, имеет ли пользователь права отслеживания почтовых сообщений с возможностью просмотра содержимого поля Subject;


    • [VIEWONLYACCESS] – проверяет, имеет ли пользователь права администратора для данного сервера, соответствующие возможностям запуска очень ограниченного набора команд консоли сервера, которые не могут повлиять на работу сервера (например, SHOW SERVER, SHOW TASKS и т.д.).


    • Рассмотрим остальные два параметра функции:

      • имя_пользователя – задает иерархическое имя пользователя (при использовании Short Name функция всегда возвращает значение 0 (False)). По синтаксису – текстовое значение нечувствительное к регистру;


      • имя_сервера – необязательный (за исключением использования функции в кнопках панели инструментов) параметр, задающий сервер, на котором проверяются права пользователя. Когда этот параметр опущен, то если

        БД, в которой выполняется функция, расположена:


      • на сервере, то он выступает в роли параметра имя_сервера;


      • на локальной станции, и в ACL БД указан административный сервер, то он выступает в роли параметра имя_сервера;


      • на локальной станции, и в ACL БД не указан административный сервер, то функция возвращает значение 0 (False).


      • Пример 1. Формула, используемая в кнопке панели инструментов, сначала запрашивает пользователя имя сервера, затем проверяет наличие прав на возможность создания на выбранном сервере новых БД, и при наличии прав – вызывает диалог создания новой БД.



        REM {Формируем список доступных серверов};

        list_server := @DbColumn(

        "" : "NoCache";

        @Subset(@MailDbName; 1) : "names.nsf";

        "($Servers)"; 1);

        REM {Запрашиваем у пользователя имя требуемого сервера};

        server := @Prompt( [OkCancelCombo];

        "Выбрать сервер";

        " Выберите сервер, на котором будет создаваться БД.";

           @Subset(@MailDbName; 1); list_server);

        REM {Проверяем возможность создания на выбранном сервере БД};

        REM {Формула приведена исключительно ради примера};

        REM {т.к. в диалоге создания БД требуется повторно выбирать сервер};

        @If(

        @ServerAccess( [CreateDatabase];

               @UserName;

               server

        )=1;

        @Command( [FileNewDatabase] );

        @Prompt( [Ok];

               "Предупреждение";

               "Вы не имеете прав на создание БД"+ @Char(13) + "на сервере " + server))


        Содержание раздела