# Реализация модерации регистрации пользователей

В этом документе описаны два подхода к реализации модерации регистрации пользователей под разные бизнес-сценарии:

- **Вариант 1**: подходит, когда нужно быстро и просто реализовать процесс модерации регистрации. Использует стандартную функцию регистрации новых пользователей: всем новичкам присваивается роль «Гость» без прав, после чего администратор вручную проверяет анкеты и обновляет роль.
- **Вариант 2**: подходит, когда требуется гибкий и кастомизируемый процесс модерации. Через специальную таблицу заявок, настройку workflow и активацию [plugin публичных форм](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) и т. д. (расширяется через plugin).

![](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 Сценарий применения

Подходит для случаев, когда нужен более гибкий и кастомизируемый процесс модерации.

Через отдельную таблицу заявок, настройки workflow и [plugin публичных форм](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            | Email-адрес заявителя                                   |
  | **Phone**              | phone              | Phone            | Контактный телефон заявителя                            |
  | **Full Name**          | full_name          | Single line text | Полное имя заявителя                                   |
  | **Application Reason** | application_reason | Long text        | Причина заявки                                         |
  | **User Type**          | user_type          | Single select    | Тип будущего пользователя (email, открытая регистрация) |
  | **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 Настройка workflow

В этом разделе показано, как настроить workflow для автоматического создания пользователя после одобрения заявки.

#### 2.2.1 Создание workflow модерации

##### 2.2.1.1 Новый workflow

- **Открываем интерфейс workflow**
  Зайдите в админке NocoBase в раздел настройки workflow и выберите «Новый workflow».
- **Выбор события-триггера**
  Можно выбрать [«Событие после операции»](https://docs-cn.nocobase.com/handbook/workflow/triggers/post-action) или [«Событие до операции»](https://docs-cn.nocobase.com/handbook/workflow/triggers/pre-action). Здесь возьмём событие до операции.
- **Настройка узлов workflow**
  Создайте узел «Создание пользователя», преобразующий данные текущей формы в данные нового пользователя, и настройте маппинг полей и логику обработки.
  Пример:
  ![](https://static-docs.nocobase.com/20250208153202.png)

#### 2.2.2 Настройка кнопок модерации

##### 2.2.2.1 Добавление кнопок «Одобрить» и «Отклонить»

В форме заявки добавьте две кнопки — «Одобрить» и «Отклонить».
![](https://static-docs.nocobase.com/20250208153302.png)

##### 2.2.2.2 Настройка функций кнопок

- **Кнопка «Одобрить»**
  - Привяжите её к только что созданному workflow.
  - При отправке устанавливайте поле «Статус» в значение «Одобрено».
    Пример:
    ![](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 Активация и настройка plugin публичных форм

С помощью [plugin публичных форм](https://docs-cn.nocobase.com/handbook/public-forms) пользователи смогут отправлять заявки через страницу.

#### 2.3.1 Активация plugin публичных форм

##### 2.3.1.1 Активация

- **Открываем менеджер plugin**
  В админ-интерфейсе найдите и активируйте plugin «Публичные формы».
  Пример:
  ![](https://static-docs.nocobase.com/20250208154258.png)

#### 2.3.2 Создание и настройка публичной формы

##### 2.3.2.1 Создание публичной формы

- **Новая форма**
  В админке создайте публичную форму для отправки заявок.
- **Настройка элементов формы**
  Добавьте необходимые элементы (имя пользователя, email, телефон и т. д.) и настройте правила валидации.
  Пример:
  ![](https://static-docs.nocobase.com/20250208155044.png)

#### 2.3.3 Активация и настройка plugin публичных форм (ключевой шаг)

##### 2.3.3.1 Тест публичной формы

- **Открываем страницу**
  Перейдите на страницу публичной формы, заполните и отправьте заявку.
- **Проверка работы**
  Убедитесь, что данные попадают в таблицу заявок и что после одобрения через workflow автоматически создаётся новый пользователь.
  Пример работы:
  ![](https://static-docs.nocobase.com/202502191351-register2.gif)

### 2.4 Дальнейшее расширение (опциональные шаги)

После реализации базового сценария регистрации и модерации можно расширять функциональность:

#### 2.4.1 Регистрация по коду приглашения

- **Описание**: ограничение круга и количества зарегистрированных пользователей через коды приглашений.
- **Идея**: добавить в таблицу заявок поле кода приглашения и в «Событии до операции» проверять корректность кода до отправки.

#### 2.4.2 Автоматические email-уведомления

- **Описание**: автоматическая отправка писем с результатом модерации, подтверждением регистрации и т. д.
- **Идея**: использовать узел отправки email в workflow.

---

Если возникнут вопросы, заходите в [сообщество NocoBase](https://forum.nocobase.com) или загляните в [официальную документацию](https://docs-cn.nocobase.com). Надеемся, это руководство поможет Вам реализовать модерацию регистрации под Ваши задачи и при необходимости расширить её. Удачной работы и успешного проекта!
