WAGBY11 MANUAL / 20
条件付き権限を設定する
ロールとレコードの状態に応じて、項目を非表示・マスク・読取専用にできます。
最終更新日:
1. このページで伝える機能
ロールとレコードの状態に応じて、項目を非表示・マスク・読取専用にできます。
2. Wagby11で実現できること
案件閲覧担当には内部メモを見せず、状態がCLOSED(確定)の案件では連絡先をマスクします。必要な案件情報は参照できるまま、業務上見せる必要がない値を制限できます。

文字列のマスクでは値を「********」として返します。非表示の項目は応答データから除かれます。画面の例では内部メモの見出しが残っていますが、メモの内容は表示されません。
更新画面では、確定済み案件の金額を読取専用の値として表示します。条件が成立しない案件の金額は編集できます。条件は保存済みのレコードを使って判定し、保存時にもサーバーで変更を確認します。入力中に状態を変えた瞬間の切り替えや、確定という業務処理全体の制御とは分けて考えます。

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