logologo
Start
Dokumentacja
Deweloperzy
Wtyczki
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
Dokumentacja
Deweloperzy
Wtyczki
API
logologo
Użytkownicy

Role i uprawnienia

Konfiguracja ról
Konfiguracja uprawnień
Zastosowanie w interfejsie
Suma ról

Przewodnik dewelopera

Rozszerzanie paska konfiguracji uprawnień

Działy

Zarządzanie działami
Zarządzanie rolami działów

Synchronizacja danych użytkowników

Zarządzanie synchronizacją

Źródła danych

WeChat Work
HTTP API

Przewodnik dewelopera

Rozszerzanie źródeł synchronizacji
Rozszerzanie celów synchronizacji
Previous PageHTTP API
Next PageRozszerzanie celów synchronizacji
TIP

Ten dokument został przetłumaczony przez AI. W przypadku niedokładności, proszę odnieść się do wersji angielskiej

#Rozszerzanie zsynchronizowanych źródeł danych

#Przegląd

NocoBase umożliwia rozszerzanie typów źródeł danych do synchronizacji danych użytkowników, zgodnie z Państwa potrzebami.

#Strona serwera

#Interfejs źródła danych

Wbudowana wtyczka do synchronizacji danych użytkowników zapewnia rejestrację i zarządzanie typami źródeł danych. Aby rozszerzyć typ źródła danych, należy dziedziczyć po abstrakcyjnej klasie SyncSource dostarczanej przez wtyczkę i zaimplementować odpowiednie standardowe interfejsy.

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

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

Klasa SyncSource zawiera właściwość options, która służy do pobierania niestandardowych konfiguracji dla źródła danych.

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

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

#Opis pól UserData

PoleOpis
dataTypeTyp danych, dostępne opcje to user i department
uniqueKeyPole unikalnego identyfikatora
recordsRekordy danych
sourceNameNazwa źródła danych

Jeśli dataType to user, pole records zawiera następujące pola:

PoleOpis
idID użytkownika
nicknamePseudonim użytkownika
avatarAwatar użytkownika
emailAdres e-mail
phoneNumer telefonu
departmentsTablica ID działów

Jeśli dataType to department, pole records zawiera następujące pola:

PoleOpis
idID działu
nameNazwa działu
parentIdID działu nadrzędnego

#Przykład implementacji interfejsu źródła danych

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

#Rejestracja typu źródła danych

Rozszerzone źródło danych musi zostać zarejestrowane w module zarządzania danymi.

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

#Strona klienta

Interfejs użytkownika po stronie klienta rejestruje typy źródeł danych za pomocą metody registerType dostarczanej przez interfejs klienta wtyczki do synchronizacji danych użytkowników:

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, // Formularz zarządzania panelem administracyjnym
      },
    });
  }
}

#Formularz zarządzania panelem administracyjnym

Górna sekcja zawiera ogólną konfigurację źródła danych, natomiast dolna sekcja umożliwia rejestrację niestandardowych formularzy konfiguracji.