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への適用
ロールの和集合

開発ガイド

権限設定欄の拡張

部署

部署管理
部署ロール管理

ユーザーデータ同期

同期管理

データソース

企業WeChat
HTTP API

開発ガイド

同期データソースの拡張
同期先リソースの拡張
Previous PageHTTP API
Next Page同期先リソースの拡張
TIP

このドキュメントはAIによって翻訳されました。不正確な情報については、英語版をご参照ください

#同期データソースの拡張

#概要

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, // バックエンド管理フォーム
      },
    });
  }
}

#バックエンド管理フォーム

上部には一般的なデータソース設定があり、下部には登録可能なカスタム設定フォームのセクションがあります。