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

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

2014年1月7日火曜日

ACLエントリに特権アクセスを付与する

皆さん、こんにちは。
昨日のブログ記事では、最後に計算問題?を出しておきましたができましたか?
実は、Domino Designerのヘルプの例に解決方法が記載されているんですね。

QueryAccessPrivilegesの結果値と戻り値の値(定数が設定されています)のビット演算をすることで判定ができるのです。
詳しい利用方法はヘルプの例を見てくださいね。

さて、今日は昨日の続きをちょこっと触れてみます。

その前に・・・
はい。ボタンクリックしてくださいね。
にほんブログ村 IT技術ブログへ


では、参りましょう。
昨日はACLエントリの特権を取得する方法でした。
今日は、設定する方法についてです。


取得は簡単にできたんだから設定も簡単だろう・・・と思ったら違います。
結構手間がかかります。
まず、特権の設定はNotesACLEntryクラスのプロパティで設定する必要があります。
さらに、特権はそれぞれ別々に設定する必要があります。

下記がプロパティの一覧です。
設定するには、このプロパティにtrueを設定すればよいのです。
  • CanCreateDocuments                   文書の作成
  • CanDeleteDocuments                   文書の削除
  • CanCreatePersonalAgent              個人エージェントの作成
  • CanCreatePersonalFolder             個人フォルダ/ビューの作成
  • CanCreateSharedFolder                共有フォルダ/ビューの作成
  • CanCreateLSOrJavaAgent            LotusScript/Javaエージェントの作成
  • IsPublicReader                             パブリック文書[読者]
  • IsPublicWriter                               パブリック文書[作成者]
  • CanReplicateOrCopyDocuments    文書を複製またはコピー

そして、特権を設定するので、設定内容を保存する必要があります。
NotesACLオブジェクトを保存(Saveメソッド)するということです。

まだあります。
ACLエントリのACLレベルによっては設定できないものがあります。
たとえば、読者権限のユーザに対して、CanCreateDocuments(文書の作成)は設定することができません。
設定エラーにもならずに無視されて動いてしまうため、注意が必要です(設定ミスなのかどうかがわかりにくい)。

上記を踏まえた上でサンプルです。
Sub Click(Source As Button)
 Dim session  As New NotesSession
 Dim db       As     NotesDatabase
 Dim acl      As     NotesACL
 Dim aclEntry As     NotesACLEntry
 Dim uiws     As New NotesUIWorkspace
 Dim uname    As     Variant
 
 uname = uiws.PickListStrings( PICKLIST_NAMES, False )
 If Isempty( uname ) Then
  Msgbox "キャンセルがクリックされたので処理を中止します"
  Exit Sub
 End If
 
 'ACLの取得とエントリの作成
 Set db       = session.CurrentDatabase
 Set acl      = db.ACL
 Set aclEntry = New NotesACLEntry( acl, uname(0), ACLLEVEL_AUTHOR )
 
 '特権(文書の作成)の付与
 aclEntry.CanCreateDocuments = True
 Call acl.Save
End Sub
サンプルは、最後に書いた矛盾エラーチェックはしていません。
Designer ヘルプの各プロパティの説明に、いつ使えるかが書いてあるのでそこを読んで使うようにしてください。




 ということで、新年連載企画(だったの?)はこれで終了です。
明日からは平常通りの更新となりますので、よろしくお願いします。



では。





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

0 件のコメント: