サポート > Wagby定義ファイル > 14 権限管理 > モデル項目に隠し権限を設定する

特定の権限をもった利用者のみ表示できる項目を設定する方法を説明します。

実行例

ここでは、「顧客」というモデルにおけるいくつかの項目に権限を付与し、特定の利用者(アカウント)からのみ閲覧できるという例を示します。 権限を持つ利用者からは、図1の画面を確認できます。


図1 権限を持つ利用者(もしくは管理者)による顧客情報の詳細表示画面

一方、権限を持たない利用者は、図2の画面となります。「メールアドレス」「携帯電話番号」「住所」という 3 つの項目が表示されません。つまりこの利用者は、これらの項目の存在を知ることがありません


図2 権限を持たない利用者から見た顧客情報の詳細画面

このように隠し権限を設定した項目については、帳票出力時でも権限がなければ、データが出力されません。 空白で出力されます。 また、メール送信機能においても同様に権限がなければメール本文にデータが反映されません。
詳細は以下のページをお読みください。

設定方法

まず「顧客(customer)」というモデルを用意します。このモデルには、氏名やメールアドレス、携帯電話番号、住所といった個人情報が含まれています。


図3 顧客モデルの設定

ここで「メールアドレス」と「携帯電話番号」、「住所」の3項目について、権限の設定を行います。権限を設定するのは、モデル定義シートの上部にある「権限定義」ボタンを押して表示される画面です。


図4 権限定義ボタン

権限定義シートでは、まず「プリンシパル」を設定します。プリンシパルとして「個人情報(privatedata)」を追加します。なおNo.1の「一般ユーザ」はあらかじめ Wagby が用意しているプリンシパルです。仕様に合わせて変更・追加することも可能です。ここでは1プリンシパルに対してデータ閲覧、検索、更新、登録、削除といった10パーミッションを指定しています。すなわち、当モデルに関しては、設定された処理を行うことが可能な権限となります。


図5 「個人情報」というプリンシパルを追加

次に権限設定シートにパーミッションを設定します。「メールアドレス(email)」「携帯電話番号(mobilephone)」「住所(address)」それぞれに、「perm_email」「perm_phone」「perm_addr」というパーミッションを追加し、「個人情報」プリンシパルと関連付けを行います。


図6 プリンシパルとパーミッションを関連付ける

パーミッションは 10 個まで追加できます。

最後にモデル定義シートに戻り、制限したい項目について、「参照権限」の欄にそれぞれパーミッション名を入力します。


図7 各項目にパーミッションを指定する

1つのパーミッションを複数の項目に対して設定することもできます。

Wagbyは標準で以下のプリンシパルを用意しています。
種類 説明
一般ユーザ データ閲覧・検索・更新・登録・削除・ダウンロード・アップロード更新・メニュー表示、一覧更新、帳票出力のパーミッションを持ちます。

一般ユーザのプリンシパルを変更すると、内部で定義されているシステム管理者のプリンシパルも同様に変更されます。
一般ユーザのプリンシパルとシステム管理者のプリンシパルを分けたい場合には、別途システム管理者のプリンシパルを作成する必要があります。システム管理者のプリンシパルを作成する場合には、必ずプリンシパル(日本語名)を「システム管理者」、プリンシパル(英語名)を「all」として定義してください。これ以外で定義すると、ビルド時にエラーとなります。

権限の割当

Wagby定義ファイルを変更してWebアプリケーションをビルドした後、利用者(アカウント)に適切な権限を付与します。

ここでは「guest」ユーザアカウントを用いて説明します。 管理者(admin)でログオンした後、「管理処理」メニューの「アカウント一覧表示」からユーザを選択し、「更新画面表示」ボタンをクリックすると、次のような「プリンシパル」という項目が表示されます。


図8 プリンシパルの設定項目

このプリンシパルに「個人情報」というプリンシパルの選択肢があります。この項目をチェックすることで、先に制限を設けた項目が表示されるようになります。ここで、「guest」にはこのプリンシパルを与えずに、「一般ユーザ」のみをチェックしてみます。この設定を保存して「guest」でログオンし、顧客情報を閲覧します。すると「メールアドレス」「携帯電話番号」「住所」の3項目についてのパーミッションをもたないため、表示されないことを確認できます。

図6の例では、パーミッションを3つ定義し、1項目につき、1パーミッションを指定していますが、3項目に同じパーミッションを指定しても、同じ動作をします。
例)「perm_abc」 というパーミッションを定義し、項目A、B、Cに参照権限を設定
【項目名】:【参照権限】
 項目A  : perm_abc
 項目B  : perm_abc
 項目C  : perm_abc