logologo
Start
Manual
Utveckling
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
Manual
Utveckling
Plugins
API
logologo
Användare

Roller & behörigheter

Rollkonfiguration
Behörighetskonfiguration
Använd i UI
Rollunion

Utvecklarguide

Utöka behörighetsfältet

Avdelningar

Avdelningshantering
Avdelningsrollhantering

Synkronisering av användardata

Synkroniseringshantering

Datakällor

WeChat Work
HTTP API

Utvecklarguide

Utöka synkroniseringskällor
Utöka synkroniseringsmål
Previous PageHTTP API
Next PageUtöka synkroniseringsmål
TIP

Detta dokument har översatts av AI. För eventuella felaktigheter, se den engelska versionen

#Utöka synkroniserade datakällor

#Översikt

NocoBase låter dig utöka typerna av datakällor för synkronisering av användardata efter behov.

#Serversidan

#Gränssnitt för datakälla

Det inbyggda plugin-programmet för synkronisering av användardata hanterar registrering och administration av datakälltyper. För att utöka en datakälltyp behöver ni ärva den abstrakta klassen SyncSource som plugin-programmet tillhandahåller och implementera de relevanta standardgränssnitten.

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

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

SyncSource-klassen innehåller egenskapen options för att hämta anpassade konfigurationer för datakällan.

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

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

#Beskrivning av UserData-fält

FältBeskrivning
dataTypeDatatyp, alternativen är user och department
uniqueKeyUnikt identifieringsfält
recordsDataposter
sourceNameDatakällans namn

Om dataType är user innehåller fältet records följande fält:

FältBeskrivning
idAnvändar-ID
nicknameAnvändarnamn
avatarAnvändaravatar
emailE-post
phoneTelefonnummer
departmentsArray med avdelnings-ID:n

Om dataType är department innehåller fältet records följande fält:

FältBeskrivning
idAvdelnings-ID
nameAvdelningsnamn
parentIdÖverordnat avdelnings-ID

#Exempel på implementering av datakällans gränssnitt

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

#Registrera en datakälltyp

Den utökade datakällan måste registreras i datamodulen.

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

#Klientsidan

Klientens användargränssnitt registrerar datakälltyper med hjälp av metoden registerType som tillhandahålls av plugin-programmets klientgränssnitt för synkronisering av användardata:

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, // Administrationsformulär
      },
    });
  }
}

#Administrationsformulär

Den övre delen visar allmänna konfigurationer för datakällan, medan den nedre delen möjliggör registrering av anpassade konfigurationsformulär.