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.reigsterType('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, // Форма керування бекендом
      },
    });
  }
}

#Форма керування бекендом

Верхня частина надає загальні налаштування джерела даних, тоді як нижня частина дозволяє реєструвати користувацькі форми конфігурації.