本文へ移動
Wagby11
マニュアルのグループを選ぶ

WAGBY11 MANUAL / 20

条件付き権限を設定する

ロールとレコードの状態に応じて、項目を非表示・マスク・読取専用にできます。

最終更新日:

認証と認可の小目次へ

1. このページで伝える機能

ロールとレコードの状態に応じて、項目を非表示・マスク・読取専用にできます。

2. Wagby11で実現できること

案件閲覧担当には内部メモを見せず、状態がCLOSED(確定)の案件では連絡先をマスクします。必要な案件情報は参照できるまま、業務上見せる必要がない値を制限できます。

確定案件の連絡先をマスクし、内部メモの値を表示しない例です。
確定案件の連絡先をマスクし、内部メモの値を表示しない例です。

文字列のマスクでは値を「********」として返します。非表示の項目は応答データから除かれます。画面の例では内部メモの見出しが残っていますが、メモの内容は表示されません。

更新画面では、確定済み案件の金額を読取専用の値として表示します。条件が成立しない案件の金額は編集できます。条件は保存済みのレコードを使って判定し、保存時にもサーバーで変更を確認します。入力中に状態を変えた瞬間の切り替えや、確定という業務処理全体の制御とは分けて考えます。

確定済み案件の金額を、90,000円の読取専用の値として表示します。
確定済み案件の金額を、90,000円の読取専用の値として表示します。

3. AIへの指示例

最小限の指示例

閲覧担当者には内部メモを見せず、確定案件の連絡先を伏せてください。

AIは対象ロール、確定を表す状態値、非表示とマスクの使い分けを類推して補います。金額変更の制限なども必要なら、いつの状態を基準にするかを伝えます。

より詳細な指示例

担当案件のG_SEC_VIEWERの参照権限では、internalMemoを常に非表示にしてください。statusがCLOSEDのときだけcontactPhoneをマスクします。G_SEC_EDITORの更新権限では、保存済みstatusがCLOSEDならamountを読取専用にし、金額の変更を保存できないようにしてください。条件は同じ案件の状態を使い、画面表示とAPI応答・保存時の制限を確認してください。
既存の定義・データ・権限を保持し、Wagby11のguide・referenceを確認してください。利用者向けの操作マニュアルを更新し、生成・ビルド後に該当ロールの画面とAPIの動作を確認してください。

4. 編集されるAppSchemaの例

以下は関連する定義の抜粋です。設定の詳細を覚えなくても、対象の利用者・操作・データ範囲をAIへ伝えられます。

permissions:
  - role: G_SEC_VIEWER
    crud: [R]
    record_scope: { any_of: [group] }
    additional:
      - { name_en: internalMemo, hidden: true }
      - name_en: contactPhone
        mask: true
        condition: 'status == "CLOSED"'
  - role: G_SEC_EDITOR
    crud: [U]
    record_scope: { any_of: [self] }
    additional:
      - name_en: amount
        readonly: true
        condition: 'status == "CLOSED"'

条件はadditionalの各項目へ指定します。条件をCRUD権限定義の直下へ置いたり、別モデルの属性を直接参照したりする例ではありません。更新時の条件は変更前のDB状態を使い、画面への入力に応じて再判定する設定ではありません。

5. 参考資料

条件付き権限
designer/docs/appschema/html/guide/10-security/05-conditional-permissions.html
権限定義
designer/docs/appschema/html/reference/07-permissions.html