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

Authentification utilisateur

Aperçu
Gestion des authentificateurs

Types d'authentification

Mot de passe
SMS

OIDC

Configuration

Exemples

Connexion Google
Connexion Microsoft

SAML

Configuration

Exemples

Connexion Google
LDAP
CAS
WeChat Work
DingTalk
Clés API

Guide de développement

Étendre les types d'authentification
Référence API

Vérification

Aperçu

Types de vérification

SMS
Authentificateur TOTP

Guide de développement

Étendre les types de vérification
Étendre les scénarios de vérification
Étendre les fournisseurs de services SMS
Référence API
Authentification à deux facteurs (2FA)
Previous PageÉtendre les scénarios de vérification
Next PageRéférence API
Avis de traduction IA

Cette documentation a été traduite automatiquement par IA.

#Étendre les fournisseurs de services SMS

Cet article explique comment étendre la fonctionnalité des fournisseurs de services SMS dans la fonction Vérification : SMS via un plugin.

#Client

#Enregistrer le formulaire de configuration

Lorsque vous configurez le vérificateur SMS, après avoir sélectionné un type de fournisseur de services SMS, un formulaire de configuration associé à ce type de fournisseur apparaît. Ce formulaire de configuration doit être enregistré par le développeur côté 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("ID de clé d'accès", { ns: "${NAMESPACE}" })}}`,
        type: 'string',
        'x-decorator': 'FormItem',
        'x-component': 'TextAreaWithGlobalScope',
        required: true,
      },
      accessKeySecret: {
        title: `{{t("Clé secrète d'accès", { 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,
      },
    });
  }
}

#Serveur

#Implémenter l'interface d'envoi

Le plugin de vérification a déjà encapsulé le processus de création de mots de passe à usage unique (OTP). Les développeurs n'ont donc qu'à implémenter la logique d'envoi des messages pour interagir avec le fournisseur de services SMS.

class CustomSMSProvider extends SMSProvider {
  constructor(options) {
    super(options);
    // options est l'objet de configuration du client
    const options = this.options;
    // ...
  }

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

#Enregistrer le type de vérification

Une fois l'interface d'envoi implémentée, vous devez l'enregistrer.

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;
    // Le nom doit correspondre à celui utilisé côté client
    plugin.smsOTPProviderManager.registerProvider('custom-sms-provider-name', {
      title: tval('Fournisseur de services SMS personnalisé', { ns: namespace }),
      provider: CustomSMSProvider,
    });
  }
}