logologo
开始
手册
开发
插件
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
开始
手册
开发
插件
API
logologo
用户

角色和权限

角色配置
权限配置
在 UI 中应用
角色并集

开发指南

扩展权限配置栏

部门

部门管理
部门角色管理

用户数据同步

同步管理

数据源

企业微信
HTTP API

开发指南

扩展同步数据源
扩展同步目标资源
Previous PageHTTP API
Next Page扩展同步目标资源

#扩展同步数据源

#概述

NocoBase 支持按需要扩展用户数据同步数据源类型。

#服务端

#数据源接口

内置的用户数据同步插件提供了数据源类型的注册和管理。扩展数据源类型,需要继承插件提供的 SyncSource 抽象类,并对相应的标准接口进行实现。

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

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

SyncSource 提供了options属性,用于获取数据源的自定义配置。

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

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

#UserData字段说明

字段说明
dataType数据类型, 可选值为 user 和 department
uniqueKey唯一标识字段
records数据记录
sourceName数据源名称

若dataType为 user,则records包含以下字段:

字段说明
id用户 ID
nickname用户昵称
avatar用户头像
email邮箱
phone手机号
departments所属部门ID数组

若dataType为 department,则records包含以下字段:

字段说明
id部门 ID
name部门名称
parentId父级部门 ID

#数据源接口实现示例

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

#数据源类型注册

扩展的数据源需要向数据管理模块注册。

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

#客户端

客户端用户界面通过用户数据同步插件客户端提供的接口 registerType 进行注册:

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, // 后台管理表单
      },
    });
  }
}

#后台管理表单

上方为通用的数据源配置,下方为可注册的自定义配置表单部分。