# ユーザー登録審査の実装

本ドキュメントでは、異なるビジネスシナリオに対応する 2 つのユーザー登録審査方式を紹介します：

- **方式 1**：シンプルかつ迅速に登録審査フローを実装したいシナリオに適しています。システムデフォルトの新規ユーザー登録機能を活用し、すべての新規ユーザーに権限なしの「ゲスト」ロールを割り当て、その後管理者がバックエンドで手動審査を行いロールを更新します。
- **方式 2**：柔軟でカスタマイズ可能な登録審査フローが必要なシナリオに適しています。専用の申請情報テーブルの設計、審査ワークフローの設定、[公開フォームプラグイン](https://docs-cn.nocobase.com/handbook/public-forms)の有効化を通じて、登録申請の提出から新規ユーザーの自動作成まで、全フローを管理できます。

  ![](https://static-docs.nocobase.com/20250219144832.png)

---

## 1. 方式 1：権限なしの「ゲスト」ロールを使用する

### 1.0 適用シナリオ

登録審査の要件がシンプルで、システム内蔵の登録機能を使用し、バックエンドで手動でユーザーを審査したいシナリオに適しています。

### 1.1 パスワード認証を有効にし、ユーザー登録を許可する

#### 1.1.1 ユーザー認証ページに移動

まず、ユーザー登録機能が有効になっているか確認します。システム設定で[ユーザー認証](https://docs-cn.nocobase.com/handbook/auth/user)ページに移動します。このページでは、「アカウント・パスワードログイン」や [Google ログイン](https://docs-cn.nocobase.com/handbook/auth-oidc/example/google)など、すべての認証チャネルを管理します（プラグインで拡張可能）。

![](https://static-docs.nocobase.com/20250208164554.png)

登録機能のスイッチはここにあります：
![](https://static-docs.nocobase.com/20250219084856.png)

### 1.2 デフォルトロールの設定（重要）

#### 1.2.1 「ゲスト」ロールの作成

システムはデフォルトで登録機能が有効になっていますが、デフォルトロールが要件に合わない場合があります。

まず【ロール一覧】で「ゲスト」ロールを作成し、デフォルトロールとして設定します。このロールには権限を付与しません。新規登録ユーザーは自動的にこのロールが割り当てられます。

![](https://static-docs.nocobase.com/20250208163521.png)

### 1.3 登録ユーザー審査画面の設定（重要）

編集モードに切り替え、バックエンドにシンプルなテーブルブロックを設定し、ユーザーテーブルを選択して、登録ユーザーの表示と管理を行います。

![](https://static-docs.nocobase.com/20250208165406.png)

### 1.4 登録審査フローのテスト、手動でロールを更新

- 新規ユーザー登録後、ページはデフォルトで空白が表示されます。
  ![](https://static-docs.nocobase.com/20250219084449.png)
- 管理画面で、申請情報に問題のないユーザーのロールを手動で指定のロールに変更し、審査を完了します。
  ![](https://static-docs.nocobase.com/20250219084702.png)

### 1.5 案内ページの設定（オプション）

#### 1.5.1 新しいページを作成し、例えば「登録成功」というページに案内メッセージを記入

> **オプション手順**：空白ページに「お客様のアカウントは審査中です。審査完了までしばらくお待ちください」などの親切なメッセージを追加して、ユーザーに現在の状態を知らせることができます。
> ![](https://static-docs.nocobase.com/Pasted%20image%2020250208231631.png)

#### 1.5.2 案内ページの権限を割り当て

次に、ユーザー権限管理の設定に移動し、「ゲスト」にこのページの権限を割り当てます。登録成功後に自動的にリダイレクトされます。
![](https://static-docs.nocobase.com/20250211223123.png)

### 1.6 ユーザーテーブルフィールドの拡張（オプション）

> **オプション手順**：登録時に審査を補助する追加情報を収集する必要がある場合は、ユーザーテーブルに関連フィールド（例：「申請理由」や「招待コード」）を追加できます。基本的な登録審査のみ必要な場合は、このステップは省略できます。

#### 1.6.1 申請フィールドの新規追加

【ユーザーテーブル】に移動し、ユーザーが登録時に記入する申請理由や招待コード情報を記録するためのフィールドを追加します。
![](https://static-docs.nocobase.com/20250208164321.png)

#### 1.6.2 「ユーザー認証」でフィールドを有効化

![](https://static-docs.nocobase.com/Pasted%20image%2020250219090248.png)

設定完了後、ログインページの【アカウント登録】をクリックすると、登録フォームに対応するフィールドが表示されます（オプション項目を設定した場合は表示され、それ以外は基本フォームが表示されます）。
![](https://static-docs.nocobase.com/20250219090447.png)

#### 1.6.3 審査ページに対応フィールドを追加

審査ページにもこれらのフィールドを追加し、リアルタイムでユーザーロールを審査・変更できるようにします。

![](https://static-docs.nocobase.com/20250208165622.png)

---

## 2. 方式 2：登録チャネルを開放せず、審査中間テーブルを追加する

### 2.0 適用シナリオ

より柔軟でカスタマイズ可能な登録審査フローが必要なシナリオに適しています。

この方式では、独立した申請情報テーブル、ワークフロー設定、[公開フォームプラグイン](https://docs-cn.nocobase.com/handbook/public-forms)を通じて、ユーザーの登録申請提出から新規ユーザーの自動作成まで、完全なフローを実現します。コアステップで基本機能を確保し、必要に応じて追加機能を拡張できます。

### 2.1 事前準備（重要）

#### 2.1.1 申請情報テーブルの設計

##### 2.1.1.1 「申請情報」テーブルの新規作成

- **テーブルの作成**
  NocoBase のバックエンドで新しいテーブルを作成し、ユーザーの登録申請情報を格納します。
- **フィールドの設定**
  テーブルに以下のフィールドを追加し、フィールドタイプと説明が正しいことを確認します：


  | Field display name     | Field name         | Field interface  | Description                                        |
  | ---------------------- | ------------------ | ---------------- | -------------------------------------------------- |
  | **ID**                 | id                 | Integer          | システムが自動生成する、レコードの一意の ID         |
  | **Username**           | username           | Single line text | 申請者のユーザー名                                 |
  | **Email**              | email              | Email            | 申請者のメールアドレス                             |
  | **Phone**              | phone              | Phone            | 申請者の連絡先電話番号                             |
  | **Full Name**          | full_name          | Single line text | 申請者のフルネーム                                 |
  | **Application Reason** | application_reason | Long text        | 申請者が記入する申請理由または説明                 |
  | **User Type**          | user_type          | Single select    | 申請者の将来のユーザータイプ（例：メール登録、オープン登録） |
  | **Status**             | status             | Single select    | 申請の現在のステータス（例：審査待ち、承認済み、却下済み） |
  | **Initial Password**   | initial_password   | Single line text | 新規ユーザーの初期パスワード（デフォルトは nocobase）|
  | **Created at**         | createdAt          | Created at       | システムが記録する作成日時                         |
  | **Created by**         | createdBy          | Created by       | システムが記録する作成者                           |
  | **Last updated at**    | updatedAt          | Last updated at  | システムが記録する最終更新日時                     |
  | **Last updated by**    | updatedBy          | Last updated by  | システムが記録する最終更新者                       |
- **テーブル構造のプレビュー**
  以下の図を参考にテーブル構造の設定が正しいことを確認します：
  ![](https://static-docs.nocobase.com/20250208145543.png)

##### 2.1.1.2 データの入力と表示

- **審査画面の設定**
  メイン画面に「登録情報審査」管理画面を設定し、ユーザーが提出した申請情報を表示します。
- **テストデータの入力**
  管理画面に移動してテストデータを入力し、データが正しく表示されることを確認します。
  ![](https://static-docs.nocobase.com/20250208151429.png)

### 2.2 ワークフローの設定

このセクションでは、審査承認後に自動的に新規ユーザーを作成する機能を実現するためのワークフロー設定方法を紹介します。

#### 2.2.1 審査ワークフローの作成

##### 2.2.1.1 ワークフローの新規作成

- **ワークフロー画面に移動**
  NocoBase のバックエンドでワークフロー設定ページに移動し、「ワークフローの新規作成」を選択します。
- **トリガーイベントの選択**
  [「操作後イベント」](https://docs-cn.nocobase.com/handbook/workflow/triggers/post-action)または[「操作前イベント」](https://docs-cn.nocobase.com/handbook/workflow/triggers/pre-action)を選択できます。ここでは操作前イベントを例に説明します。
- **ワークフローノードの設定**
  「ユーザー追加」ノードを新規作成し、現在のフォームデータを新規ユーザーデータに変換して、フィールドマッピングと処理ロジックを設定します。
  参考図：
  ![](https://static-docs.nocobase.com/20250208153202.png)

#### 2.2.2 フォーム審査ボタンの設定

##### 2.2.2.1 「承認」と「却下」ボタンの追加

申請情報フォームに「審査承認」と「審査却下」の 2 つのボタンをそれぞれ追加します。
![](https://static-docs.nocobase.com/20250208153302.png)

##### 2.2.2.2 ボタン機能の設定

- **「審査承認」ボタンの設定**
  - 先ほど作成したワークフローにバインドします。
  - 送信時に【ステータス】フィールドの値を「審査承認」に設定します。
    参考図：
    ![](https://static-docs.nocobase.com/20250208153429.png)
    ![](https://static-docs.nocobase.com/20250208153409.png)
- **「審査却下」ボタンの設定**
  - 送信時に【ステータス】フィールドの値を「審査却下」に設定します。

##### 2.2.2.3 ボタンの連動ルール設定

重複操作を防ぐため、連動ルールを設定します：【ステータス】が【審査待ち】でない場合はボタンを非表示にします。
参考図：
![](https://static-docs.nocobase.com/20250208153749.png)

### 2.3 公開フォームプラグインの有効化と設定

[公開フォームプラグイン](https://docs-cn.nocobase.com/handbook/public-forms)を利用して、ユーザーがページから登録申請を提出できるようにします。

#### 2.3.1 公開フォームプラグインの有効化

##### 2.3.1.1 プラグインの有効化操作

- **プラグイン管理に移動**
  バックエンド管理画面で「公開フォーム」プラグインを見つけて有効化します。
  参考図：
  ![](https://static-docs.nocobase.com/20250208154258.png)

#### 2.3.2 公開フォームの新規作成と設定

##### 2.3.2.1 公開フォームの作成

- **フォームの新規作成**
  バックエンド管理で公開フォームを作成し、ユーザーの登録申請提出に使用します。
- **フォーム要素の設定**
  必要なフォーム要素（ユーザー名、メールアドレス、連絡先電話番号など）を追加し、対応するバリデーションルールを設定します。
  参考図：
  ![](https://static-docs.nocobase.com/20250208155044.png)

#### 2.3.3 公開フォームプラグインの有効化と設定（重要）

##### 2.3.3.1 公開フォームのテスト

- **ページを開く**
  公開フォームページにアクセスし、申請データを入力して送信します。
- **機能の検証**
  データが正しく申請情報テーブルに入り、ワークフローによる審査後に新規ユーザーが自動作成されることを確認します。
  テスト効果の参考：
  ![](https://static-docs.nocobase.com/202502191351-register2.gif)

### 2.4 今後の拡張（オプション）

基本的な登録と審査フローの完成後、必要に応じて以下の機能を拡張できます：

#### 2.4.1 招待コード登録

- **機能説明**：招待コードを設定して、登録ユーザーの範囲と数を制限します。
- **設定の考え方**：申請テーブルに招待コードフィールドを追加し、「操作前イベント」を使用して、送信前にこのフィールドの妥当性チェックとインターセプトを行います。

#### 2.4.2 自動メール通知

- **機能説明**：審査結果通知、登録成功などのメール自動送信を実現します。
- **設定の考え方**：NocoBase のメールノードと組み合わせて、ワークフロー内にメール送信操作を追加します。

---

操作中に何か問題が発生した場合は、[NocoBase コミュニティ](https://forum.nocobase.com)で交流するか、[公式ドキュメント](https://docs-cn.nocobase.com)を参照してください。本ガイドが、実際のニーズに応じたユーザー登録審査の実装と柔軟な拡張にお役立ていただければ幸いです。ご利用がスムーズに進み、プロジェクトが成功することをお祈りしています！
