logologo
Mulai
Panduan
Pengembangan
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
Mulai
Panduan
Pengembangan
Plugin
API
logologo
Pengguna

Peran dan Izin

Konfigurasi Peran
Konfigurasi Izin
Terapkan di UI
Gabungan Peran

Panduan Pengembang

Perluas Bar Konfigurasi Izin

Departemen

Manajemen Departemen
Manajemen Peran Departemen

Sinkronisasi Data Pengguna

Manajemen Sinkronisasi

Sumber Data

WeChat Work
HTTP API

Panduan Pengembang

Perluas Sumber Data Sinkronisasi
Perluas Sumber Daya Target Sinkronisasi
Previous PageHTTP API
Next PagePerluas Sumber Daya Target Sinkronisasi
TIP

Dokumen ini diterjemahkan oleh AI. Untuk ketidakakuratan apa pun, silakan lihat versi bahasa Inggris

#Memperluas Sumber Data yang Tersinkronisasi

#Gambaran Umum

NocoBase mendukung perluasan jenis sumber data untuk sinkronisasi data pengguna sesuai kebutuhan.

#Sisi Server

#Antarmuka Sumber Data

Plugin sinkronisasi data pengguna bawaan menyediakan pendaftaran dan pengelolaan untuk jenis sumber data. Untuk memperluas jenis sumber data, Anda perlu mewarisi kelas abstrak SyncSource yang disediakan oleh plugin dan mengimplementasikan antarmuka standar yang relevan.

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

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

Kelas SyncSource menyertakan properti options untuk mengambil konfigurasi kustom untuk sumber data.

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

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

#Deskripsi Kolom UserData

KolomDeskripsi
dataTypeTipe data, pilihan adalah user dan department
uniqueKeyKolom pengidentifikasi unik
recordsCatatan data
sourceNameNama sumber data

Jika dataType adalah user, kolom records berisi kolom-kolom berikut:

KolomDeskripsi
idID Pengguna
nicknameNama panggilan pengguna
avatarAvatar pengguna
emailEmail
phoneNomor telepon
departmentsArray ID departemen

Jika dataType adalah department, kolom records berisi kolom-kolom berikut:

KolomDeskripsi
idID Departemen
nameNama departemen
parentIdID departemen induk

#Contoh Implementasi Antarmuka Sumber Data

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

#Mendaftarkan Jenis Sumber Data

Sumber data yang diperluas harus didaftarkan ke modul pengelolaan data.

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

#Sisi Klien

Antarmuka pengguna sisi klien mendaftarkan jenis sumber data menggunakan metode registerType yang disediakan oleh antarmuka klien plugin sinkronisasi data pengguna:

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, // Formulir pengelolaan backend
      },
    });
  }
}

#Formulir Pengelolaan Backend

Bagian atas menyediakan konfigurasi sumber data umum, sedangkan bagian bawah memungkinkan pendaftaran formulir konfigurasi kustom.