機能
@nocobase/app-plugin-authz-sharing-rules がこの拡張を提供します。共有ルールは、ユーザーやチームなどの指定した主体にレコードを追加します。引き継ぎやチームをまたぐ協働に使います。受け取る側にも、該当する操作の権限が必要です。
ルールの管理はアプリが担います。実行時の登録に加えて、認可のファクトリーが必要です。
シナリオと例
例
顧客 A を別の営業担当者と共有するには、まずその人に顧客の読み取りのアクセスを付与してから、読み取りの操作で A を選ぶ共有ルールを追加します。これで編集や、関連するレコードへの無制限のアクセスが付与されることはありません。
まず操作の付与を確認し、範囲を設定してから、許可されたレコード、除外されたレコード、API の直接の呼び出しを検証します。ルールを実際のアクセスに反映させるには、業務の照会が認可のポリシーを適用する必要があります。
開発用のプロンプト(アプリのディレクトリで作業するコーディングエージェント向け):
@nocobase/app-plugin-authz-sharing-rules を使ってください。顧客 A を営業担当者 B と読み取り専用で
共有し、ほかの顧客へのアクセスとすべての編集の権限はそのまま保ってください。
認可の拡張は保ち、ルールの管理をその設定の権限とともに組み込んでください。レコードを設定する
前に読み取りの操作を確認してください。制限を回避するために管理者の付与を追加しないでください。
許可されたレコードと除外されたレコードを、API の直接の呼び出しで検証してください。完了の条件B が顧客 A を読めるようになり、編集のアクセスや、認可されていないほかの顧客へのアクセスは得ていないこと。
主な仕組みと実装
以下は、この例での組み込みの領域と、想定される画面の変化です。開発作業を記述したもので、実際のファイル構成はアプリに合わせてください。
| 組み込みの領域 | コードまたは設定の変更 | 画面と動作の変化 |
|---|---|---|
| プラグインの配列と server/config/authorization.ts | ランタイムを登録し、sharingRules() を組み込む | エンドポイントとルールの評価を有効にする |
| アプリのルールの管理ページ | 選択肢、選択、保護された書き込みを組み込む | 管理者が意図したルールを管理する |
| 業務の照会とテスト | ポリシーを適用し、異なる主体でテストする | ルールが返されるデータに影響する |
組み込み
権限管理 と並べてその Client と Server の入口を登録し、マイグレーションを適用して、server/config/authorization.ts にファクトリーを追加します。
import { sharingRules } from '@nocobase/app-plugin-authz-sharing-rules/server';
// Merge into the existing authorization configuration, retaining other extensions.
plugins: [sharingRules()]実行時の登録は、ロケールとマイグレーションを提供します。設定のファクトリーが、ルールの動作と HTTP のエンドポイントをインストールします。パッケージをインストールしただけでは、それらは有効になりません。
ルールを設定して使う
主体、リソース、操作、レコードの選択を指定します。選択は明示的な ID や登録された recordAccess を使えますが、all は拒否されます。操作の権限をすでに持つ全員が使える共通の基準には、既定のデータアクセスを使います。
/api/authorization/sharingRules は、一覧、作成、更新、削除と、それを支える選択のエンドポイントを提供します。管理ページはアプリが所有します。操作には、settings:authorization.sharing-rules に対する、対応する read、create、update、delete の操作が必要です。
ルールは保護されたエンドポイントで保存します。信頼できるサーバーのコードは、認可サービスの sharingRules の API を使えます。独自の HTTP のラッパーでは、認可と入力の検証を保つ必要があります。
AI 開発の制約と検証
プラグイン固有の開発の制約
- 共有は、明示的な主体とレコードの選択で保存してください。all を使ったり、関連するすべてのレコードを公開したりしないでください。
- ルールが変えるのはレコードで、ページ、操作、フィールドの付与ではありません。サーバーの照会がそのポリシーを適用していることを検証してください。
- root のアカウントだけでなく、unrestricted でない身元を使って、組み合わせたルール、削除、直接のアクセスを確認してください。
境界
ルールはページ、操作、フィールドの権限を付与せず、関連するレコードを自動で公開することもありません。制限ルールは、組み合わせた既定の範囲と共有の範囲を引き続き絞り込みます。unrestricted の身元はこれらのルールを回避するため、一般ユーザーでもテストしてください。
関連:権限管理、既定のデータアクセス、共有ルール、制限ルール。
これらはあなたの組み込みの検収の要件であり、実機での検証が完了したことを示すものではありません。実際の変更、実行したチェック、未検証の項目をエージェントに報告させてください。プロジェクトのガイダンス、スキル、共通のチェックについては アプリの開発を続ける と テスト を参照してください。
出典:公開のプラグインの入口と実装。