logologo
Démarrer
Manuel
Développement
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
Démarrer
Manuel
Développement
Plugins
API
logologo
Utilisateurs

Rôles et permissions

Configuration des rôles
Configuration des permissions
Appliquer dans l'UI
Union des rôles

Guide de développement

Étendre la configuration des permissions

Départements

Gestion des départements
Gestion des rôles de département

Synchronisation des données utilisateur

Gestion de la synchronisation

Sources de données

WeChat Work
HTTP API

Guide de développement

Étendre la source de données de synchronisation
Étendre la ressource cible de synchronisation
Previous PageHTTP API
Next PageÉtendre la ressource cible de synchronisation
Avis de traduction IA

Cette documentation a été traduite automatiquement par IA.

#Extension des sources de données synchronisées

#Vue d'ensemble

NocoBase vous permet d'étendre les types de sources de données pour la synchronisation des données utilisateur, selon vos besoins.

#Côté serveur

#Interface de la source de données

Le plugin de synchronisation des données utilisateur intégré gère l'enregistrement et la gestion des types de sources de données. Pour étendre un type de source de données, vous devez hériter de la classe abstraite SyncSource fournie par le plugin et implémenter les interfaces standard correspondantes.

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

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

La classe SyncSource inclut une propriété options pour récupérer les configurations personnalisées de la source de données.

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

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

#Description des champs UserData

ChampDescription
dataTypeType de données, les options sont user et department
uniqueKeyChamp d'identifiant unique
recordsEnregistrements de données
sourceNameNom de la source de données

Si dataType est user, le champ records contient les champs suivants :

ChampDescription
idID utilisateur
nicknameSurnom de l'utilisateur
avatarAvatar de l'utilisateur
emailE-mail
phoneNuméro de téléphone
departmentsTableau des ID de département

Si dataType est department, le champ records contient les champs suivants :

ChampDescription
idID du département
nameNom du département
parentIdID du département parent

#Exemple d'implémentation de l'interface de source de données

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

#Enregistrement d'un type de source de données

La source de données étendue doit être enregistrée auprès du module de gestion des données.

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

#Côté client

L'interface utilisateur côté client enregistre les types de sources de données en utilisant la méthode registerType fournie par l'interface client du plugin de synchronisation des données utilisateur :

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, // Formulaire d'administration
      },
    });
  }
}

#Formulaire d'administration

La section supérieure présente la configuration générale de la source de données, tandis que la section inférieure permet l'enregistrement de formulaires de configuration personnalisés.