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

Ruoli e Permessi

Configurazione Ruolo
Configurazione Permessi
Applica nell'UI
Unione di Ruoli

Guida per Sviluppatori

Estendi Barra Configurazione Permessi

Dipartimenti

Gestione Dipartimenti
Gestione Ruoli Dipartimento

Sincronizzazione Dati Utente

Gestione Sincronizzazione

Origini Dati

WeChat Work
API HTTP

Guida per Sviluppatori

Estendi Origine Dati di Sincronizzazione
Estendi Risorsa di Destinazione Sincronizzazione
Previous PageAPI HTTP
Next PageEstendi Risorsa di Destinazione Sincronizzazione
Avviso di traduzione IA

Questa documentazione è stata tradotta automaticamente dall'IA.

#Estendere le Fonti Dati Sincronizzate

#Panoramica

NocoBase Le permette di estendere i tipi di fonte dati per la sincronizzazione dei dati utente in base alle Sue esigenze.

#Lato Server

#Interfaccia della Fonte Dati

Il plugin di sincronizzazione dei dati utente integrato offre la registrazione e la gestione dei tipi di fonte dati. Per estendere un tipo di fonte dati, deve ereditare la classe astratta SyncSource fornita dal plugin e implementare le interfacce standard pertinenti.

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

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

La classe SyncSource include una proprietà options per recuperare le configurazioni personalizzate della fonte dati.

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

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

#Descrizione dei Campi UserData

CampoDescrizione
dataTypeTipo di dati, le opzioni sono user e department
uniqueKeyCampo identificatore univoco
recordsRecord di dati
sourceNameNome della fonte dati

Se dataType è user, il campo records contiene i seguenti campi:

CampoDescrizione
idID utente
nicknameNickname utente
avatarAvatar utente
emailEmail
phoneNumero di telefono
departmentsArray di ID dei dipartimenti

Se dataType è department, il campo records contiene i seguenti campi:

CampoDescrizione
idID dipartimento
nameNome dipartimento
parentIdID dipartimento padre

#Esempio di Implementazione dell'Interfaccia della Fonte Dati

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

#Registrazione di un Tipo di Fonte Dati

La fonte dati estesa deve essere registrata nel modulo di gestione dei dati.

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

#Lato Client

L'interfaccia utente lato client registra i tipi di fonte dati utilizzando il metodo registerType fornito dall'interfaccia client del plugin di sincronizzazione dei dati utente:

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, // Modulo di gestione backend
      },
    });
  }
}

#Modulo di Gestione Backend

La sezione superiore mostra la configurazione generale della fonte dati, mentre la sezione inferiore permette la registrazione di moduli di configurazione personalizzati.