2025/09/11

アクセス権限とロールの取得 - LotusScript

前々回 は DB に対してアクセスレベルと文書の削除権限などのオプション設定を取得する関数である @UserAccess、前回 はロールを取得する @UserRoles を紹介しました。同様の情報は LotusScript  でも取得可能です。

使用するのは NotesDatabase クラスのメソッドとなります。順に確認しましょう。


アクセスレベルの取得

データベースに対する現在のアクセスレベルを返します。構文は次の通りです。

level% = notesDatabase.QueryAccess( name$ )

引数は1つです。

1 name$ 文字列 ユーザ、グループ、または、サーバ名

@UserAccess との使い方の違いは、

  • 調査する DB が引数ではなく、DB オブジェクトを取得してそのメソッドをコールする
  • 現在のユーザだけでなく、調査する名前を引数で指定する
  • 引数にはユーザだけでなく、グループやサーバ名を指定できる

点となります。

また、戻り値についても注意が必要です。@UserAccess と同じく 0(なし)~ 6(管理者)を返すのですが、型は ”文字列” ではなく Integer 型となる点にも注意してください。


オプションの取得

文書の作成や削除権限など ACL のオプション設定を取得するには、QueryAccessPrivileges メソッドを利用します。

privileges& = notesDatabase.QueryAccessPrivileges( name$ )

使い方や引数は、QueryAccess メソッドと同じでです。

戻り値は数値なのですが、少し特殊で、次の値の組み合わせで返します。これは複数のオプションが指定されることへの対処ですね。判定時には、値と定数のどちらでも使用できます。

定数
1 DBACL_CREATE_DOCUMENTS
2 DBACL_DELETE_DOCUMENTS
4 DBACL_CREATE_PRIV_AGENTS
8 DBACL_CREATE_PRIV_FOLDERS_VIEWS
16 DBACL_CREATE_SHARED_FOLDERS_VIEWS
32 DBACL_CREATE_SCRIPT_AGENTS
64 DBACL_READ_PUBLIC_DOCUMENTS
128 DBACL_WRITE_PUBLIC_DOCUMENTS
256 DBACL_REPLICATE_COPY_DOCUMENTS

定数名を見ればどのオプションかはすぐ分かるので、説明は割愛しています。

@UserAccess との違いは『文書を複製またはコピー』オプションも含めて処理してくれる点です。


ロールの取得

ロールを取得するには、QueryAccessRoles メソッドを利用します。使い方や引数は、上記メソッドと同じです。

roles = notesDatabase.QueryAccessRoles( name$ )

戻り値は String 型の配列となります。


名前の指定方法

引数はすべてのメソッドで共通ですが、指定方法には少しだけ注意が必要です。ユーザ名を指定する場合、階層付きでつける必要があります。


指定するユーザ名
× User01 Notes
User01 Notes/Domino
CN=User01 Notes/O=Domino


まとめ

今回は、LotusScript でアクセス権限やオプション、ロールを取得する方法をまとめました。これら機能は @UserAccess や @UserRoles に比べ後発の機能なので、使用がスッキリまとまっていますね。


0 件のコメント:

コメントを投稿