あるお客様からDomino Voltのアプリケーションを作成したが、自分が作成したレコードしか閲覧できない。他の人が作成したレコードも閲覧できるようになりたい。
という相談を受けました。
そこで今回は、Domino Voltアプリケーションのアクセス権について考えてみましょう。

1.現象

相談された内容をもとに現象をまとめると以下のような形になります。
アンケートアプリケーションなんかでは他人が作成したレコードは見えなくて都合が良いですが、それでも管理者だけが全員の分を閲覧・編集できるというのはあまり良くないですね。

ユーザー区分作成読取更新削除備考
管理者全員が作成したレコードの閲覧・編集が可能 
一般ユーザー自分が作成したレコードのみ閲覧が可能
匿名ユーザー今回は匿名ユーザーは利用しない

2.理想型

では、どういった形でアプリケーションとして理想でしょうか?アプリケーションによって答えは異なると思いますが、今回はアンケートアプリケーションとしての正解を考えてみましょう。
そうなると、基本的には上記の表の通りで良いでしょう。
追加として特定のユーザー(もしくはグループのメンバー)は全員が作成したレコードの閲覧が可能となっていると良いのではないでしょうか?
表にまとめると以下のようになります。

ユーザー区分作成読取更新削除備考
管理者 全員が作成したレコードの閲覧・編集が可能
一般ユーザー 自分が作成したレコードのみ閲覧が可能
アンケートとりまとめ 全員が作成したレコードの閲覧が可能
(削除は自分が作成したレコードのみ)
匿名ユーザー今回は匿名ユーザーは利用しない

3.アプリケーションの設定

3-1.フォーム

まず、現象を確認するためにアプリケーションを作成してみます。
フォームは簡単にするためにこんな感じにしてみました。テキストとアンケートだけです。

フォーム画面

3-2.アクセス

続いてアクセスタブを見てみます。デフォルトでは以下のように設定されています。

役割名ユーザーの割り当て
管理者アプリケーションを作成したユーザー
イニシエーターすべての認証済みユーザー
レコード所有者インスタンス作成者
役割とユーザーの割り当て
ステージ設定
設計設定

3-3.ステージ、その他

ステージはデフォルトの「開始」「発行済み」「終了」のままとしておきます。
また、その他のタブ(スタイル、イベント等)についてもデフォルトのままとしておきます。

4.実行結果の確認

それではアプリケーションを保存・デプロイしたら、レコードを作成して結果を確認しましょう。
ユーザーは「管理者」と「一般ユーザー」を2名の計3名で試しました。レコードを作成した後の表([データの表示]を実行した画面)は以下の通りです。

各ユーザーでの実行結果

ユーザー1(Masahiko Miyo)とユーザー2(Masaharu Shimizu)では自分が作成したレコードだけが表示されているので、確かに他人が作成したレコードは閲覧できないようです。

5.原因

作成されたレコードのステージはいずれも”発行済み”になっています。
ここで「発行済み」のステージ設定を確認してみます。
「発行済み」ステージでレコードを閲覧(読取)できるのは「管理者」もしくは「レコード所有者」となっています。
「管理者」はアプリケーションを作成したユーザーなので、確かに全員のレコードが閲覧できています。
問題となるのは「レコード所有者」の方でしょう。

次に「レコード所有者」は誰が割り当てられているのかを確認します。
「レコード所有者」の役割を確認すると、”インスタンス作成者”となっています。
Domino Voltのオンラインヘルプ(Assigning users or groups to roles)によると、「インスタンス作成者」はフォームを送信したユーザーとなっています。
これは、Notesで言うところの文書の作成者ということになります。

つまり、「レコード所有者」はレコードを作成したユーザーということになります。
こうなってくると、確かにユーザー1、ユーザー2は自分が作成したレコードのみ閲覧できるというのも納得できます。
これで原因がはっきりしました。

6.修正方法

2.理想型で記述したように「特定のユーザー(orグループのメンバー)は全員の作成したレコードが閲覧できる」ようにしましょう。
どうすれば良いでしょうか?
特定のユーザーということなので、一般のユーザーは自分が作成したレコードだけを閲覧出来れば良いです。
つまり、「レコード所有者」はそのまま利用できると言うことになります。

そこで、新しい役割を作ることにします。
役割の名前は”アンケートとりまとめ”とします。
次にこの「アンケートとりまとめ」に割り当てるユーザーを選択します。
ここではユーザー1(Masahiko Miyo)を設定します。なお、ステージ設定は自動で設定されます。

アンケートとりまとめのユーザー割り当て
アンケートとりまとめを追加した後のステージ設定

7.最終確認

これでアプリケーションを保存して再度デプロイしてみましょう。
ユーザー1(Masahiko Miyo)でビューを開いて[データの最新表示]をクリックしてみると他のユーザーが作成したレコードも閲覧出来るようになりました。

再度、ユーザー1(Masahiko Miyo)でビューを表示してみた

8.まとめ

このようにDomino Voltアプリケーションでは「アクセス」タブでレコードの読者や編集者を設定できることが出来るようになっています。
アプリケーションを作成する際は、レコードの所有権をどうするのかを確認しておくようにしましょう。