文書ごとのアクセス権の設定

2012/6/30

クラシカルNotesをやってた人なら、フィールドの種類を「読者名」や「作成者名」というフィールドを作り、そこにユーザー名、グループ名、 ロール名を設定すれば文書ごとに読める人、編集できる人を制限できることを知っていると思う。

XPagesでもそのへんの機能は使えるので試してみよう。

文書保存時の処理の概略

フォームを設計するときに、アクセス制御用フィールドの種類を「読者名」、「作成者」としておいても、XPagesの世界ではあまり関係ない。

文書を保存するときの処理で、以下のようなことをすればいい。

具体的にはこんな処理になる。document1が文書のデータソースとする。

  01: var document1.setValue("Reader", "参加者G");
  02: var document1.setValue("Author", [@UserName(), "[メンテナ]"]);
  03:
  04: var doc:NotesDocument = document1.getDocument();
  05: var item_reader:NotesItem = doc.getFirstItem("Reader");
  06: var item_author:NotesItem = doc.getFirstItem("Author");
  07: item_reader.setReaders(true);
  08: item_author.setAuthors(true);
  

2行目は操作者のユーザー名と"[メンテナ]"というロール名を設定している。複数の対象を設定するときは配列が使えるので便利。 5,6行目でフィールドを取得し、7,8行目で読者名フィールド、作成者名フィールドに設定している。

自分自身の編集権限を削除して保存することも可能。以後、編集はできなくなるけど。