KI-Übersetzungshinweis

Diese Dokumentation wurde automatisch von KI übersetzt.

Erweitern von synchronisierten Datenquellen

Übersicht

NocoBase ermöglicht es Ihnen, die Typen von Datenquellen für die Benutzersynchronisierung bei Bedarf zu erweitern.

Serverseitig

Datenquellen-Schnittstelle

Das integrierte Plugin für die Benutzersynchronisierung bietet die Registrierung und Verwaltung von Datenquellentypen. Um einen Datenquellentyp zu erweitern, müssen Sie die vom Plugin bereitgestellte abstrakte Klasse SyncSource erben und die entsprechenden Standardschnittstellen implementieren.

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

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

Die Klasse SyncSource enthält eine options-Eigenschaft, um benutzerdefinierte Konfigurationen für die Datenquelle abzurufen.

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

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

Beschreibung der UserData-Felder

FeldBeschreibung
dataTypeDatentyp, mögliche Werte sind user und department
uniqueKeyEindeutiges Bezeichnerfeld
recordsDatensätze
sourceNameName der Datenquelle

Wenn dataType den Wert user hat, enthält das Feld records die folgenden Felder:

FeldBeschreibung
idBenutzer-ID
nicknameBenutzer-Spitzname
avatarBenutzer-Avatar
emailE-Mail
phoneTelefonnummer
departmentsArray von Abteilungs-IDs

Wenn dataType den Wert department hat, enthält das Feld records die folgenden Felder:

FeldBeschreibung
idAbteilungs-ID
nameAbteilungsname
parentIdÜbergeordnete Abteilungs-ID

Beispiel für die Implementierung der Datenquellen-Schnittstelle

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

Registrierung eines Datenquellentyps

Die erweiterte Datenquelle muss beim Datenverwaltungsmodul registriert werden.

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

Clientseitig

Die clientseitige Benutzeroberfläche registriert Datenquellentypen über die registerType-Methode, die von der Client-Schnittstelle des Benutzersynchronisierungs-Plugins bereitgestellt wird:

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

Backend-Verwaltungsformular

Der obere Bereich zeigt die allgemeine Datenquellenkonfiguration, während der untere Bereich die Registrierung von benutzerdefinierten Konfigurationsformularen ermöglicht.