logologo
Inizio
Guida
Sviluppo
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
Inizio
Guida
Sviluppo
Plugin
API
logologo

Autenticazione Utente

Panoramica
Gestione Autenticatori

Tipi di Autenticazione

Password
SMS

OIDC

Configurazione

Esempi

Login con Google
Login con Microsoft

SAML

Configurazione

Esempi

Login con Google
LDAP
CAS
WeChat Work
DingTalk
Chiavi API

Guida per Sviluppatori

Estendi Tipi di Autenticazione
Riferimento API

Verifica

Panoramica

Tipi di Verifica

SMS
Autenticatore TOTP

Guida per Sviluppatori

Estendi Tipi di Verifica
Estendi Scenari di Verifica
Estendi Provider SMS
Riferimento API
Autenticazione a Due Fattori (2FA)
Previous PageEstendi Scenari di Verifica
Next PageRiferimento API
Avviso di traduzione IA

Questa documentazione è stata tradotta automaticamente dall'IA.

#Estendere i fornitori di servizi SMS

Questo articolo spiega come estendere la funzionalità dei fornitori di servizi SMS nella funzione Verifica: SMS tramite un plugin.

#Client

#Registrare il modulo di configurazione

Quando l'utente configura il verificatore SMS, dopo aver selezionato un tipo di fornitore di servizi SMS, apparirà un modulo di configurazione associato a quel tipo di fornitore. Questo modulo di configurazione deve essere registrato dallo sviluppatore sul lato client.

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

#Implementare l'interfaccia di invio

Il plugin di verifica ha già incapsulato il processo di creazione di password dinamiche monouso (OTP), quindi gli sviluppatori devono solo implementare la logica per l'invio di messaggi per interagire con il fornitore di servizi SMS.

class CustomSMSProvider extends SMSProvider {
  constructor(options) {
    super(options);
    // options è l'oggetto di configurazione dal client
    const options = this.options;
    // ...
  }

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

#Registrare il tipo di verifica

Una volta implementata l'interfaccia di invio, è necessario registrarla.

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;
    // Il nome deve corrispondere a quello usato sul client
    plugin.smsOTPProviderManager.registerProvider('custom-sms-provider-name', {
      title: tval('Custom SMS provider', { ns: namespace }),
      provider: CustomSMSProvider,
    });
  }
}