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

Autentikasi Pengguna

Ikhtisar
Manajemen Autentikator

Jenis Autentikasi

Kata Sandi
SMS

OIDC

Konfigurasi

Contoh

Login Google
Login Microsoft

SAML

Konfigurasi

Contoh

Login Google
LDAP
CAS
WeChat Work
DingTalk
Kunci API

Panduan Pengembang

Memperluas Jenis Autentikasi
Referensi API

Verifikasi

Ikhtisar

Jenis Verifikasi

SMS
Autentikator TOTP

Panduan Pengembang

Memperluas Jenis Verifikasi
Memperluas Skenario Verifikasi
Memperluas Penyedia Layanan SMS
Referensi API
Autentikasi Dua Faktor (2FA)
Previous PageMemperluas Skenario Verifikasi
Next PageReferensi API
TIP

Dokumen ini diterjemahkan oleh AI. Untuk ketidakakuratan apa pun, silakan lihat versi bahasa Inggris

#Memperluas Penyedia Layanan SMS

Artikel ini menjelaskan cara memperluas fungsionalitas penyedia layanan SMS dalam fitur Verifikasi: SMS melalui sebuah plugin.

#Klien

#Mendaftarkan Formulir Konfigurasi

Saat mengonfigurasi verifikator SMS, setelah memilih jenis penyedia layanan SMS, akan muncul formulir konfigurasi yang terkait dengan jenis penyedia tersebut. Formulir konfigurasi ini perlu didaftarkan oleh pengembang di sisi klien.

import { Plugin, SchemaComponent } from '@nocobase/client';
import PluginVerificationClient from '@nocobase/plugin-verification/client';
import React from 'react';

const CustomSMSProviderSettingsForm: React.FC = () => {
  return <SchemaComponent schema={{
    type: 'void',
    properties: {
      accessKeyId: {
        title: `{{t("Access Key ID", { ns: "${NAMESPACE}" })}}`,
        type: 'string',
        'x-decorator': 'FormItem',
        'x-component': 'TextAreaWithGlobalScope',
        required: true,
      },
      accessKeySecret: {
        title: `{{t("Access Key Secret", { ns: "${NAMESPACE}" })}}`,
        type: 'string',
        'x-decorator': 'FormItem',
        'x-component': 'TextAreaWithGlobalScope',
        'x-component-props': { password: true },
        required: true,
      },
    }
  }} />
}

class PluginCustomSMSProviderClient extends Plugin {
  async load() {
    const plugin = this.app.pm.get('verification') as PluginVerificationClient;
    plugin.smsOTPProviderManager.registerProvider('custom-sms-provider-name', {
      components: {
        AdminSettingsForm: CustomSMSProviderSettingsForm,
      },
    });
  }
}

#Server

#Mengimplementasikan Antarmuka Pengiriman

Plugin verifikasi telah mengemas proses pembuatan kata sandi dinamis satu kali (OTP). Jadi, pengembang hanya perlu mengimplementasikan logika pengiriman pesan untuk berinteraksi dengan penyedia layanan SMS.

class CustomSMSProvider extends SMSProvider {
  constructor(options) {
    super(options);
    // options adalah objek konfigurasi dari klien
    const options = this.options;
    // ...
  }

  async send(phoneNumber: string, data: { code: string }) {
    // ...
  }
}

#Mendaftarkan Jenis Verifikasi

Setelah antarmuka pengiriman diimplementasikan, antarmuka tersebut perlu didaftarkan.

import { Plugin } from '@nocobase/server';
import PluginVerificationServer from '@nocobase/plugin-verification';
import { tval } from '@nocobase/utils';

class PluginCustomSMSProviderServer extends Plugin {
  async load() {
    const plugin = this.app.pm.get('verification') as PluginVerificationServer;
    // nama harus sesuai dengan yang digunakan di klien
    plugin.smsOTPProviderManager.registerProvider('custom-sms-provider-name', {
      title: tval('Custom SMS provider', { ns: namespace }),
      provider: CustomSMSProvider,
    });
  }
}