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에 적용
역할 합집합

개발 가이드

권한 구성 바 확장

부서

부서 관리
부서 역할 관리

사용자 데이터 동기화

동기화 관리

데이터 소스

WeCom
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, // 백엔드 관리 폼
      },
    });
  }
}

#백엔드 관리 폼

상단은 일반적인 데이터 소스 설정이며, 하단은 등록 가능한 사용자 정의 설정 폼 부분입니다.