当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。
記事そのもののリンクについてはご自由に行っていただいてよいです。

テクてく Lotus 技術者 Slack に参加しよう!

2014年1月6日月曜日

ACLエントリの特権を調査する

2014年になりました。
本当は年末年始の休暇中に1本くらい、記事を書きたかったのですが、気が乗りませんでした。
そういう時は無理に書かないことに決めています。期待した方々(いるのかな?)、すみませんでした。


ということで、新年最初の投稿です。
まずは、恒例のボタンクリックから始めましょう。
にほんブログ村 IT技術ブログへ



では、始めます。
と言っても、最初から難しい話を書いても頭が回らないでしょうから簡単なものにします。
ACLエントリが持つ特権のチェックについてです。

特権とはACLの下図の部分ですね。
ACLの特権

この値は、ACLエントリのレベルにより、デフォルトで設定されるものもありますが、たいていは各エントリで変更することができます。
したがって、「管理者」だから、「編集者」だから・・・というだけではわからない部分があります。
これをLotus Scriptで取得しましょう。ということです。


サンプルソースはこちら。
実際の値の取得はNotesDatabaseクラスのQueryAccessPrivilegesメソッドで行っています。
Sub Click(Source As Button)
 Dim uiws As New NotesUIWorkspace
 Dim session As New NotesSession
 Dim db As NotesDatabase
 Dim ret As Long
 Dim uname As Variant
 
 uname  = uiws.PickListString( PICKLIST_NAMES, False )
 Set db  = session.CurrentDatabase
 ret = db.QueryAccressPrivileges( uname(0) )
 MsgBox uname(0) & "の権限値は" & Cstr(ret) & "です。"
End Sub
このサンプルではアドレス帳からユーザを選択して、そのユーザの特権値を表示しています。
気を付けてほしいのは、グループを選択しても動作しないということです。
ただし、ACLにグループで設定されている場合、そのグループのメンバーを選択すれば、正しく動作します


このメソッドの戻り値は以下の通りです。
1    文書の作成
2    文書の削除
4    個人エージェントの作成
8    個人フォルダ/ビューの作成
16    共有フォルダ/ビューの作成
32    LotusScript/Javaエージェントの作成
64    パブリック文書[読者]
128    パブリック文書[作成者]
256    文書を複製またはコピー



数値は合計数で返ってくるので、分解が必要になります。
(例えば、文書の作成、文書の削除の特権を有している場合、3が返ってきます)

この結果値の分解はサンプルには組み込んでいませんので、自力で作成してください(^^
お正月ボケした頭への体操にはちょうど良いのではないでしょうか。


ということで、これくらいで終わりにします。
本年もよろしくお願いします。








【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします!
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

0 件のコメント: