logologo
Começar
Manual
Desenvolvimento
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
Começar
Manual
Desenvolvimento
Plugins
API
logologo
Usuários

Funções e permissões

Configuração de função
Configuração de permissão
Aplicar na UI
União de funções

Guia de Desenvolvimento

Estender barra de configuração de permissões

Departamentos

Gerenciamento de departamentos
Gerenciamento de funções de departamento

Sincronização de dados de usuário

Gerenciamento de sincronização

Fontes de Dados

WeCom
API HTTP

Guia de Desenvolvimento

Estender fonte de dados de sincronização
Estender recurso de destino de sincronização
Previous PageAPI HTTP
Next PageEstender recurso de destino de sincronização
Aviso de tradução por IA

Esta documentação foi traduzida automaticamente por IA.

#Estendendo Fontes de Dados Sincronizadas

#Visão Geral

O NocoBase permite que você estenda os tipos de fonte de dados para sincronização de dados do usuário conforme a sua necessidade.

#Lado do Servidor

#Interface da Fonte de Dados

O plugin de sincronização de dados do usuário integrado oferece o registro e o gerenciamento de tipos de fonte de dados. Para estender um tipo de fonte de dados, você precisa herdar a classe abstrata SyncSource fornecida pelo plugin e implementar as interfaces padrão correspondentes.

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

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

A classe SyncSource inclui uma propriedade options para recuperar configurações personalizadas da fonte de dados.

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

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

#Descrição dos Campos de UserData

CampoDescrição
dataTypeTipo de dados, as opções são user e department
uniqueKeyCampo de identificador único
recordsRegistros de dados
sourceNameNome da fonte de dados

Se dataType for user, o campo records contém os seguintes campos:

CampoDescrição
idID do usuário
nicknameApelido do usuário
avatarAvatar do usuário
emailE-mail
phoneNúmero de telefone
departmentsArray de IDs de departamento

Se dataType for department, o campo records contém os seguintes campos:

CampoDescrição
idID do departamento
nameNome do departamento
parentIdID do departamento pai

#Exemplo de Implementação da Interface da Fonte de Dados

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

#Registrando um Tipo de Fonte de Dados

A fonte de dados estendida deve ser registrada no módulo de gerenciamento de dados.

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

#Lado do Cliente

A interface de usuário do cliente registra tipos de fonte de dados usando o método registerType fornecido pela interface do cliente do plugin de sincronização de dados do usuário:

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, // Formulário de gerenciamento de back-end
      },
    });
  }
}

#Formulário de Gerenciamento de Back-end

A seção superior apresenta a configuração geral da fonte de dados, enquanto a seção inferior permite o registro de formulários de configuração personalizados.