機能
@nocobase/app-plugin-users は、アカウントの管理、招待、個人の設定を提供します。身元、パスワード、セッションは 認証 が担い、ロールと許可する操作は 権限管理 とアプリが定めます。
プラグインは招待の受諾を提供し、管理ページと業務上のロールの範囲はアプリが組み込みます。
シナリオと例
例:メンバーを招待する
- アプリのユーザー管理のページで、メールアドレスと割り当て可能なロールを入力します。
- 招待の結果をそれぞれ確認します。権限のある招待者は、返された
inviteUrlをコピーできます。 - 新しいユーザーは名前とパスワードを入力し、既存のユーザーは招待されたメールアドレスでサインインしてから受諾します。
- そのユーザーとして、付与されたロールと業務上のアクセスを検証します。
メールの配信には、設定済みのメールチャネルが必要です。配信に失敗しても、招待が無効になるとは限りません。リンクを共有する前にレスポンスを確認してください。招待を更新すると、古いトークンは無効になります。招待のメールは通知の配信を使い、個人のメールボックス は必要ありません。
開発用のプロンプト(アプリのディレクトリで作業するコーディングエージェント向け):
Users プラグインを使って、既存のアプリにメンバーの管理と招待を追加してください。
UsersClient と、既存の認証と認可を再利用してください。ユーザーの一覧、招待、
割り当て可能なロールの選択を追加し、招待ごとの結果を表示してください。
既存のアカウントと付与は保ってください。一般のメンバーとして管理が拒否されることと、
招待されたアカウントとして招待を受諾できることを検証してください。完了の条件招待された人が意図したロールで参加し、一般のメンバーは管理の API を呼び出せないこと。
主な仕組みと実装
以下は、この例での組み込みの領域と、想定される画面の変化です。開発作業を記述したもので、実際のファイル構成はアプリに合わせてください。
| 組み込みの領域 | コードまたは設定の変更 | 画面と動作の変化 |
|---|---|---|
| クライアントのルートとメンバーのページ | UsersClient、一覧、招待、ロールの選択肢を組み込む | 管理画面があり、受信者にはプラグインの招待のページを使う |
| サーバーのロールの範囲の設定 | 業務上のロールの範囲と管理の認可を組み込む | 割り当て可能なロールがサーバーのルールを反映する |
| ロケールリソースとテスト | 結果のテキストと検証を追加する | 失敗が目に見え、既存のアカウントの動作を確認できる |
組み込みと入口
Client と Server のプラグインは Authentication と Authorization のあとに登録し、アプリのマイグレーションを適用します。共通の手順については プラグインを管理する を参照してください。
プラグインが登録するページは /invite/:token だけです。アプリは、@nocobase/app-plugin-users/client/user-client の UsersClient を使ってユーザー管理のページを作ります。このガイドのページと API のパスは、すべてアプリのマウント先からの相対パスです。/main のアプリでは、招待は /main/invite/:token で提供されます。
アカウントを管理する
| 作業 | 利用できる機能 |
|---|---|
| ユーザーを探す | 名前、ユーザー名、メールアドレス、ステータス、ロールでのページ分けした検索 |
| アカウントを編集する | アカウントの作成、編集、有効化、無効化 |
| アクセスを管理する | ロールの割り当て、パスワードの再設定、セッションの取り消し |
| 人を招待する | 招待の作成、再送、取り消し、受諾 |
| 設定を保存する | テーマや言語など、アプリが定義する値の保存 |
/api/users の API には、サインインと、対応する user の操作が必要です。作成には create と assign-role の両方が必要です。ページを表示しても、権限は付与されません。
割り当て可能なロールの選択肢は UsersClient で読み取ります。サーバーの組み込みでは、/server/tokens の userManagementServiceToken と userRoleScopeRegistryToken を使います。後者は、アプリ固有のロールの範囲を接続します。
AI 開発の制約と検証
プラグイン固有の開発の制約
- ロールの選択肢は割り当て可能な選択肢から作り、create と assign-role のサーバーのチェックは残してください。選択肢を隠すだけでは不十分です。
- アドレスごとの招待の結果を保ち、再試行の前に、作成とメールの失敗を区別してください。
- 新規と既存の招待された人、無効になった古いリンク、無効にしたアカウントのセッションを検証してください。削除は過去の身元の消去ではありません。
設定と境界
/client/preferences の useUserPreference(key, { defaultValue }) は、theme.mode などの値を保存し、その動作はアプリが実装します。
無効化、セッションの取り消し、削除は別々の操作です。削除には明示的な確認が必要で、過去の帰属のために無効な身元を残し、メールアドレスとユーザー名は予約されたままになります。業務上の後片付けは、アプリのロールの範囲が扱います。一般ユーザーとして管理の操作が拒否されること、招待の受諾、無効化や取り消しのあとのセッションの動作を検証してください。
これらはあなたの組み込みの検収の要件であり、実機での検証が完了したことを示すものではありません。実際の変更、実行したチェック、未検証の項目をエージェントに報告させてください。プロジェクトのガイダンス、スキル、共通のチェックについては アプリの開発を続ける と テスト を参照してください。
出典:公開のプラグインの入口と実装。