サポート > リポジトリ > 認証・認可 > 条件によって権限の適用可否を変更する

項目の値によって、設定した権限の適用可否を(実行時に)変更させることができます。

対象となるモデルの項目の値によって、指定した権限を適用するか、しないかを設定することができます。

閲覧権限に条件式を設定する

権限をもったアカウントで操作し、かつ条件式が true になったとき、当該項目は閲覧可能になります。 条件式が false であれば項目は不可視(表示されない)になります。

更新権限に条件式を設定する

権限をもったアカウントで操作し、かつ条件式が true になったとき、当該項目は更新可能になります。 条件式が false であれば項目は更新不可(閲覧のみ)になります。

ここでは、顧客モデルの「電子メール」項目の更新権限に、条件を設定してみます。

図1 モデル定義

「権限」タブ内の「機能権限」タブを開きます。二つのプリンシパル「個人情報R」「個人情報W」を追加しました。これらはそれぞれ、パーミッション「メールR」「メールW」を保持します。

"R" は読み込み、"W" は書き込みを意図して命名しています。

図2 個人情報Rと個人情報Wプリンシパルを追加する

「電子メール」項目に、閲覧権限と更新権限を設定します。[詳細...]

ここに条件を指定することができます。具体的には、項目に対する権限指定入力欄に「;(セミコロン)」を記述します。この区切り文字の右側が条件式となります。条件式の戻り値はtrueまたはfalseのいずれかとします。

図3 条件つき更新権限の設定

この式は、年齢(age)が20以上の場合にtrueを返すとしています。そのため、20歳以上は更新可能で、それ以下は(更新権限を有していても)更新不可となります。

p_mailW; IF(${age}>=20,true,false)
以下のテストはトライアルキットではお試しいただけません。アカウントの追加処理を行うためです。開発キットをご利用ください。

アカウント「manager」を用意しました。「manager」は "顧客管理" および "個人情報R" そして "個人情報W" プリンシパルをもちます。

図4 アカウント manager のプリンシパル

「manager」でログオンし、顧客データを更新した例です。年齢は20歳以上という条件を満たすため、「電子メール」項目は更新できます。

図5 顧客データの更新 (1)

もう一つの顧客データの更新例です。年齢は20歳以上という条件を満たさないため、「電子メール」項目は更新できません。

図6 顧客データの更新 (2)
条件式の対象となる項目(上記の例では「年齢」)の値が変更されたら、画面を再描画するという設定と併用することができます。 これにより、登録・更新画面で値を変更すると自動的に項目の表示が切り替えられるようになります。

SCREENTYPE関数とHASMODELPERMISSION関数を利用して、画面によって権限をコントロールする例を紹介します。

select;
  IF(EXACT(SCREENTYPE(),"insert"),
  true,
  HASMODELPERMISSION("perm_koushin","product"))

この式の説明は次のとおりです。

  • select は Wagby が提供する標準のパーミッションです。[詳細...]
  • 画面種別(SCREENTYPE())が "insert"の場合(登録画面の場合)、true(つまり編集可能)となります。
  • 画面種別(SCREENTYPE())が "insert"以外の場合(更新画面の場合)、perm_koushin 権限を有する場合は true(編集可能)、権限を持っていない場合は false(編集不可能)となります。

入力値によって条件式を適用したい場合

条件式の対象となる項目の値が変更されたら、画面を再描画するという設定と併用してください。 これにより、登録・更新画面で値を変更すると自動的に項目の表示が切り替えられるようになります。

繰り返し項目・繰り返しコンテナ項目

繰り返し項目および繰り返しコンテナに条件付き権限設定を適用した場合、次のような動作となります。

  • 新規登録時は、初期値が指定されていれば、その値がセットされます。
  • 更新画面では、登録した値がそのまま使われます。
  • 権限が有効になって編集可能となった場合、値が空白であれば初期値がセットされます。値が入っている状態であれば、その値がそのまま使われます。
  • 読み込み専用となった状態で、ソートボタンは非表示となります。
  • 繰り返しコンテナ内項目の入力チェックと条件付き権限指定を組み合わせたとき、入力可のレコードについてのみ、入力チェックを行います。
  • 条件式に繰り返しコンテナ内の項目を指定した場合、ラベル表示の判定は先頭のデータを用いて行われます。

検索条件

条件付き権限設定を行った項目を検索画面の検索条件に加えた場合、条件部は無視されます。

一覧表示

条件付き権限設定を行った項目を一覧表示画面に加えた場合、次のようになります。

  • 閲覧権限の条件を満たさない場合は、一覧表示画面に項目が表示されません。
  • (閲覧条件を満たすが)更新権限の条件を満たさない場合は、一覧表示画面で列の見出しがすべて表示され、内容が表示されません。
  • 一覧表示画面に条件付き権限設定を行った項目(上記の設定例における「メールアドレス」)を含めた場合、条件部の項目(上記の設定例では「年齢」項目)も、一覧表示画面に含める必要があります。これは、条件判断処理で必要となるためです。
  • 一覧表示画面の条件付き権限管理で、繰り返しコンテナ内の項目を(一覧表示の項目として)出力する場合、条件式はコンテナの先頭のデータを用いて判定されます。