logologo
Начало
Руководство
Разработка
Плагины
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Начало
Руководство
Разработка
Плагины
API
logologo
Пользователи

Роли и права доступа

Настройка ролей
Настройка прав доступа
Применение в UI
Объединение ролей

Руководство для разработчиков

Расширение панели настройки прав

Отделы

Управление отделами
Управление ролями отделов

Синхронизация данных пользователей

Управление синхронизацией

Источники данных

WeChat Work
HTTP API

Руководство для разработчиков

Расширение источников данных для синхронизации
Расширение целевых ресурсов для синхронизации
Previous PageHTTP API
Next PageРасширение целевых ресурсов для синхронизации
Уведомление о переводе ИИ

Эта документация была автоматически переведена ИИ.

#Расширение синхронизируемых источников данных

#Обзор

NocoBase позволяет расширять типы источников данных для синхронизации пользовательских данных по мере необходимости.

#Серверная часть

#Интерфейс источника данных

Встроенный плагин синхронизации пользовательских данных обеспечивает регистрацию и управление типами источников данных. Чтобы расширить тип источника данных, вам необходимо унаследовать абстрактный класс SyncSource, предоставляемый плагином, и реализовать соответствующие стандартные интерфейсы.

import { SyncSource, UserData } from '@nocobase/plugin-user-data-sync';

class CustomSyncSource extends SyncSource {
  async pull(): Promise<UserData[]> {
    return [];
  }
}

Класс SyncSource содержит свойство options, которое используется для получения пользовательских конфигураций источника данных.

import { SyncSource, UserData } from '@nocobase/plugin-user-data-sync';

class CustomSyncSource extends SyncSource {
  async pull(): Promise<UserData[]> {
    //...
    const { appid, secret } = this.options;
    //...
    return [];
  }
}

#Описание полей UserData

ПолеОписание
dataTypeТип данных, возможные значения: user и department
uniqueKeyПоле уникального идентификатора
recordsЗаписи данных
sourceNameНазвание источника данных

Если dataType имеет значение user, поле records содержит следующие поля:

ПолеОписание
idID пользователя
nicknameНикнейм пользователя
avatarАватар пользователя
emailЭлектронная почта
phoneНомер телефона
departmentsМассив ID отделов

Если dataType имеет значение department, поле records содержит следующие поля:

ПолеОписание
idID отдела
nameНазвание отдела
parentIdID родительского отдела

#Пример реализации интерфейса источника данных

import { SyncSource, UserData } from '@nocobase/plugin-user-data-sync';

class CustomSyncSource extends SyncSource {
  async pull(): Promise<UserData[]> {
    // ...
    const ThirdClientApi = new ThirdClientApi(
      this.options.appid,
      this.options.secret,
    );
    const departments = await this.clientapi.getDepartments();
    const users = await this.clientapi.getUsers();
    // ...
    return [
      {
        dataType: 'department',
        uniqueKey: 'id',
        records: departments,
        sourceName: this.instance.name,
      },
      {
        dataType: 'user',
        uniqueKey: 'id',
        records: users,
        sourceName: this.instance.name,
      },
    ];
  }
}

#Регистрация типа источника данных

Расширенный источник данных необходимо зарегистрировать в модуле управления данными.

import UserDataSyncPlugin from '@nocobase/plugin-user-data-sync';

class CustomSourcePlugin extends Plugin {
  async load() {
    const syncPlugin = this.app.pm.get(
      UserDataSyncPlugin,
    ) as UserDataSyncPlugin;
    if (syncPlugin) {
      syncPlugin.sourceManager.registerType('custom-source-type', {
        syncSource: CustomSyncSource,
        title: 'Custom Source',
      });
    }
  }
}

#Клиентская часть

Клиентский пользовательский интерфейс регистрирует типы источников данных с помощью метода registerType, предоставляемого клиентским интерфейсом плагина синхронизации пользовательских данных:

import SyncPlugin from '@nocobase/plugin-user-data-sync/client';

class CustomSourcePlugin extends Plugin {
  async load() {
    const sync = this.app.pm.get(SyncPlugin);
    sync.registerType(authType, {
      components: {
        AdminSettingsForm, // Форма управления бэкендом
      },
    });
  }
}

#Форма управления бэкендом

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