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 PageÉtendre la source de données de synchronisation
Avis de traduction IA

Cette documentation a été traduite automatiquement par IA.

#Extension des ressources cibles de synchronisation

#Aperçu

NocoBase prend en charge nativement la synchronisation des données utilisateur vers les tables Utilisateur et Département. Vous pouvez également étendre les ressources cibles de synchronisation pour écrire des données dans d'autres tables ou effectuer des traitements personnalisés selon vos besoins.

Expérimental

La documentation complète est en attente.

#Interface du gestionnaire de ressources cibles

export abstract class UserDataResource {
  name: string;
  accepts: SyncAccept[];
  db: Database;
  logger: SystemLogger;

  constructor(db: Database, logger: SystemLogger) {
    this.db = db;
    this.logger = logger;
  }

  abstract update(
    record: OriginRecord,
    resourcePks: PrimaryKey[],
    matchKey?: string,
  ): Promise<RecordResourceChanged[]>;
  abstract create(
    record: OriginRecord,
    matchKey: string,
  ): Promise<RecordResourceChanged[]>;

  get syncRecordRepo() {
    return this.db.getRepository('userDataSyncRecords');
  }

  get syncRecordResourceRepo() {
    return this.db.getRepository('userDataSyncRecordsResources');
  }
}

#Enregistrement des ressources cibles

registerResource(resource: UserDataResource, options?: ToposortOptions)

import { Plugin } from '@nocobase/server';
import PluginUserDataSyncServer from '@nocobase/plugin-user-data-sync';

class CustomUserResourcePluginServer extends Plugin {
  async load() {
    const userDataSyncPlugin = this.app.pm.get(PluginUserDataSyncServer);
    if (userDataSyncPlugin && userDataSyncPlugin.enabled) {
      userDataSyncPlugin.resourceManager.registerResource(
        new CustomDataSyncResource(this.db, this.app.logger),
      );
    }
  }
}