logologo
Start
Handleiding
Ontwikkeling
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
Start
Handleiding
Ontwikkeling
Plugins
API
logologo
Gebruikers

Rollen en rechten

Rolconfiguratie
Rechtenconfiguratie
Toepassen in UI
Rol-unie

Ontwikkelaarsgids

Rechtenconfiguratiebalk uitbreiden

Afdelingen

Afdelingsbeheer
Afdelingsrolbeheer

Gebruikersgegevenssynchronisatie

Synchronisatiebeheer

Gegevensbronnen

WeChat Work
HTTP API

Ontwikkelaarsgids

Synchronisatiebronnen uitbreiden
Synchronisatiedoelen uitbreiden
Previous PageHTTP API
Next PageSynchronisatiedoelen uitbreiden
TIP

Dit document is vertaald door AI. Voor onnauwkeurigheden, raadpleeg de Engelse versie

#Gegevensbronnen voor synchronisatie uitbreiden

#Overzicht

NocoBase biedt de mogelijkheid om de typen gegevensbronnen voor het synchroniseren van gebruikersgegevens naar behoefte uit te breiden.

#Serverzijde

#Gegevensbron-interface

De ingebouwde plugin voor het synchroniseren van gebruikersgegevens biedt functionaliteit voor het registreren en beheren van gegevensbrontypen. Om een gegevensbrontype uit te breiden, erft u de abstracte klasse SyncSource van de plugin over en implementeert u de bijbehorende standaardinterfaces.

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

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

De SyncSource-klasse bevat een options-eigenschap om aangepaste configuraties voor de gegevensbron op te halen.

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

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

#Beschrijving van UserData-velden

VeldBeschrijving
dataTypeGegevenstype, opties zijn user en department
uniqueKeyUniek identificatieveld
recordsGegevensrecords
sourceNameNaam van de gegevensbron

Als dataType user is, bevat het veld records de volgende velden:

VeldBeschrijving
idGebruikers-ID
nicknameGebruikersnaam
avatarGebruikersavatar
emailE-mail
phoneTelefoonnummer
departmentsArray van afdelings-ID's

Als dataType department is, bevat het veld records de volgende velden:

VeldBeschrijving
idAfdelings-ID
nameAfdelingsnaam
parentIdBovenliggende afdelings-ID

#Voorbeeldimplementatie van de gegevensbron-interface

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

#Een gegevensbrontype registreren

De uitgebreide gegevensbron moet worden geregistreerd bij de gegevensbeheermodule.

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

#Clientzijde

De gebruikersinterface aan de clientzijde registreert gegevensbrontypen via de registerType-methode die wordt aangeboden door de client-interface van de plugin voor gebruikersgegevenssynchronisatie:

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, // Backend management form
      },
    });
  }
}

#Backend-beheerformulier

Het bovenste gedeelte toont de algemene configuratie van de gegevensbron, terwijl het onderste gedeelte de mogelijkheid biedt om aangepaste configuratieformulieren te registreren.