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

Roles y permisos

Configuración de roles
Configuración de permisos
Aplicar en la UI
Unión de roles

Guía de desarrollo

Extender panel de configuración de permisos

Departamentos

Gestión de departamentos
Gestión de roles de departamento

Sincronización de datos de usuario

Gestión de sincronización

Fuentes de datos

WeCom
API HTTP

Guía de desarrollo

Extender fuente de datos de sincronización
Extender recurso de destino de sincronización
Previous PageAPI HTTP
Next PageExtender recurso de destino de sincronización
Aviso de traducción por IA

Esta documentación ha sido traducida automáticamente por IA.

#Extensión de fuentes de datos sincronizadas

#Resumen

NocoBase le permite extender los tipos de fuente de datos para la sincronización de datos de usuario según sea necesario.

#Lado del servidor

#Interfaz de la fuente de datos

El plugin de sincronización de datos de usuario integrado ofrece el registro y la gestión de los tipos de fuente de datos. Para extender un tipo de fuente de datos, debe heredar la clase abstracta SyncSource que proporciona el plugin e implementar las interfaces estándar correspondientes.

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

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

La clase SyncSource incluye una propiedad options que le permite recuperar configuraciones personalizadas para la fuente de datos.

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

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

#Descripción de los campos de UserData

CampoDescripción
dataTypeTipo de datos, las opciones son user y department
uniqueKeyCampo de identificador único
recordsRegistros de datos
sourceNameNombre de la fuente de datos

Si dataType es user, el campo records contiene los siguientes campos:

CampoDescripción
idID de usuario
nicknameApodo de usuario
avatarAvatar de usuario
emailCorreo electrónico
phoneNúmero de teléfono
departmentsArray de IDs de departamento

Si dataType es department, el campo records contiene los siguientes campos:

CampoDescripción
idID de departamento
nameNombre del departamento
parentIdID del departamento padre

#Ejemplo de implementación de la interfaz de la fuente de datos

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,
      },
    ];
  }
}

#Registro de un tipo de fuente de datos

La fuente de datos extendida debe registrarse en el módulo de gestión de datos.

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',
      });
    }
  }
}

#Lado del cliente

La interfaz de usuario del cliente registra los tipos de fuente de datos utilizando el método registerType que proporciona la interfaz de cliente del plugin de sincronización de datos de usuario:

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, // Formulario de administración de backend
      },
    });
  }
}

#Formulario de administración de backend

La sección superior proporciona la configuración general de la fuente de datos, mientras que la sección inferior permite el registro de formularios de configuración personalizados.