Passer au contenu principal

Configuration requise

Configuration Auth0 requise – Assurez-vous que votre locataire est configuré avec l’ API My Organization. Afficher le guide de configuration →

Installation

pnpm add @auth0/universal-components-react
L’exécution de la commande shadcn installe également la dépendance @auth0/universal-components-core pour les utilitaires partagés et l’intégration Auth0..

Démarrage rapide

import { DomainTable } from "@auth0/universal-components-react/spa";

export function DomainsPage() {
  return <DomainTable />;
}
Bien que cet exemple utilise une application à page unique React, les configurations des propriétés (schéma, customMessages, style, etc.) s’appliquent également aux configurations Next.js et shadcn.
importer React à partir de « react »;
imporert { DomainTable } à partir de « @auth0/universal-components-react/spa »;
importer { Auth0Provider } à partir de « @auth0/auth0-react »;
importer { Auth0ComponentProvider } à partir de « @auth0/universal-components-react/spa »;
importer { useNavigate } à partir de « react-router-dom »;

function DomainsManagementPage() {
  const navigate = useNavigate();

  return (
    <div className="max-w-6xl mx-auto p-6">
      <DomainTable
        schema={{
          create: {
            domain: {
              regex: /^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,}$/i,
              errorMessage: « Veuillez saisir un domaine valide (pex., example.com) ».,
            },
          },
        }}
        createAction={{
          onBefore: (domain) => {
            if (!domain.domain.includes(".")) {
              alert(« Veuillez saisir un domaine valide avec un TLD »);
              return false;
            }
            return true;
          },
          onAfter: (domain) => console.log("Domain created:", domain),
        }}
        verifyAction={{
          onAfter: (domain) => {
            console.log("Domain verified:", domain.domain);
          },
        }}
        deleteAction={{
          onBefore: (domain) => {
            return confirm(`Delete ${domain.domain}?`);
          },
        }}
        onOpenProvider={(provider) => {
          navigate(`/providers/${provider.id}`);
        }}
        onCreateProvider={() => {
          navigate("/providers/create");
        }}
        customMessages={{
          header: {
            title: « Gestion des domaines »,
            description: « Ajouter et vérifier les domaines pour votre organization »,
            create_button_text: « Ajouter un nouveau domaine »,
          },
        }}
        styling={{
          variables: {
            common: { "--font-size-label": "12px" },
            light: { "--color-primary": "#0066cc" },
          },
          classes: {
            "DomainTable-header": "shadow-lg rounded-xl",
          },
        }}
      />
    </div>
  );
}

export default function App() {
  return (
    <Auth0Provider
      domain="your-domain.auth0.com"
      clientId="your-client-id"
      authorizationParams={{
        redirect_uri: window.location.origin,
      }}
    >
      <Auth0ComponentProvider>
        <DomainsManagementPage />
      
    
  );
}

Propriétés

Propriétés d’affichage

Les propriétés d’affichage contrôlent la manière dont le composant s’affiche sans altérer son comportement. Veuillez les utiliser pour masquer des sections ou activer le mode lecture seule.
PropriétéTypeDescription
readOnlybooleanDésactiver toutes les opérations du domaine. Valeur par défaut : false
hideHeaderbooleanMasquer la section d’en-tête. Valeur par défaut : false

Propriétés d’action

Les accessoires d’action gèrent les interactions des utilisateurs et définissent ce qui se produit lorsque les utilisateurs effectuent des opérations liées au domaine. Veuillez utiliser les hooks de cycle de vie (onBefore, onAfter) pour intégrer le routage et l’analyse de votre application.
PropriétéTypeDescription
createActionComponentAction<Domain>Créer une action de domaine. Détails
verifyActionComponentAction<Domain>Vérifier l’action du domaine. Détails
deleteActionComponentAction<Domain>Supprimer l’action du domaine. Détails
associateToProviderActionComponentAction<Domain, IdentityProvider>Associer un domaine à un fournisseur. Détails
deleteFromProviderActionComponentAction<Domain, IdentityProvider>Supprimer le domaine du fournisseur. Détails
onOpenProvider(provider: IdentityProvider) => voidRendez-vous au fournisseur depuis le modal de configuration. Détails
onCreateProvider() => voidRendez-vous à Créer un flux de fournisseur. Détails

createAction

Type : ComponentAction<Domain> Contrôle le flux de création de domaines. Utilisez onAfter pour suivre l’ajout de nouveaux domaines. Propriétés :
  • disabled – Désactiver le bouton « Ajouter un domaine »
  • onBefore(domain) – S’exécute avant la création du domaine. Renvoie false pour empêcher la création (p. ex., si le format du domaine n’est pas valide).
  • onAfter(domain) – S’exécute une fois le domaine créé avec succès. À utiliser pour afficher une notification ou suivre l’événement.
Exemple :
<DomainTable
  createAction={{
    onBefore: (domain) => {
      // Validate domain format
      if (!domain.domain.includes(".")) {
        alert(« Veuillez saisir un domaine valide »);
        return false;
      }
      return true;
    },
    onAfter: (domain) => {
      analytics.track("Domain Created", { domain: domain.domain });
    },
  }}
/>

verifyAction

Type : ComponentAction<Domain> Contrôle le flux de vérification du domaine. La vérification du domaine prouve la propriété via l’enregistrement DNS TXT. Propriétés :
  • disabled – Désactiver le bouton de vérification
  • onBefore(domain) – S’exécute avant la tentative de vérification. Renvoie false pour empêcher la vérification (p. ex., pour confirmer que le DNS est configuré).
  • onAfter(domain) – S’exécute une fois le domaine vérifié avec succès. À utiliser pour afficher une notification de réussite.
Exemple :
<DomainTable
  verifyAction={{
    onBefore: (domain) => {
      return confirm(
        `Vérifier ${domain.domain}? Assurez-vous que vos zones DNS sont configurées.`,
      );
    },
    onAfter: (domain) => {
      toast.success(`${domain.domain} vérifié avec succès!`);
    },
  }}
/>

deleteAction

Type : ComponentAction<Domain> Contrôle la suppression du domaine. Il est recommandé d’utiliser onBefore pour la confirmation, car cette opération est irréversible. Propriétés :
  • disabled – Désactiver le bouton de suppression
  • onBefore(domain) – S’exécute avant la suppression. Renvoie false pour empêcher la suppression (recommandé pour les fenêtres de confirmation).
  • onAfter(domain) – S’exécute une fois le domaine supprimé avec succès. À utiliser pour suivre l’événement ou afficher une notification.
Exemple :
<DomainTable
  deleteAction={{
    onBefore: (domain) => {
      return confirm(`Supprimer le domaine ${domain.domain}? Cette action est irréversible.`);
    },
    onAfter: (domain) => {
      analytics.track("Domain Deleted", { domain: domain.domain });
    },
  }}
/>

associateToProviderAction

Type : ComponentAction<Domain, IdentityProvider> Contrôles associant un domaine vérifié à un fournisseur SSO. Seuls les domaines vérifiés peuvent être associés. Propriétés :
  • disabled – Désactiver l’action associée
  • onBefore(domain, provider) – S’exécute avant l’association. Renvoie false pour empêcher l’association.
  • onAfter(domain, provider) – S’exécute une fois que le domaine a été associé avec succès au fournisseur.
Exemple :
<DomainTable
  associateToProviderAction={{
    onAfter: (domain, provider) => {
      console.log(`Associated ${domain.domain} with ${provider.name}`);
    },
  }}
/>

deleteFromProviderAction

Type : ComponentAction<Domain, IdentityProvider> Contrôles permettant de supprimer l’association d’un domaine avec un fournisseur SSO. Propriétés :
  • disabled – Désactiver l’action de dissociation
  • onBefore(domain, provider) – S’exécute avant la suppression. Renvoie false pour empêcher la suppression.
  • onAfter(domain, provider) – S’exécute une fois que le domaine a été supprimé avec succès du fournisseur.

onOpenProvider / onCreateProvider

Type : (provider: IdentityProvider) => void / () => void Gestionnaires de navigation pour le modal de configuration du domaine. Lorsque les utilisateurs configurent les associations de fournisseurs d’un domaine :
  • onOpenProvider – Appelé lorsque l’utilisateur clique sur un fournisseur existant pour l’afficher ou le modifier.
  • onCreateProvider – Appelé lorsque l’utilisateur clique pour créer un nouveau fournisseur
Exemple :
<DomainTable
  onOpenProvider={(provider) => {
    navigate(`/providers/${provider.id}`);
  }}
  onCreateProvider={() => {
    navigate("/providers/create");
  }}
/>

Propriétés de personnalisation

Les propriétés de personnalisation vous permettent d’adapter le composant à votre marque, à votre région et à vos exigences de validation sans modifier le code source.
PropriétéTypeDescription
schemaDomainTableSchemaRègles de validation des URL de domaine. Détails
customMessagesPartial<DomainTableMainMessages>Remplacement du texte i18n. Détails
stylingComponentStylingVariables CSS et remplacements de classe. Détails

schéma

Définir des règles de validation personnalisées pour la saisie d’URL de domaine.
create.domainUrl – Validation de l’URL du domaine – regex – Modèle de regex personnalisé – errorMessage – Message d’erreur personnalisé
<DomainTable
  schema={{
    create: {
      domain: {
        regex: /^[a-z0-9.-]+\.[a-z]{2,}$/,
        errorMessage: « Saisir un domaine valide (exemple.com) ,
      },
    },
  }}
/>

customMessages

Personaliser tous les textes et toutes les traductions. Tous les champs sont facultatifs et utilisent les valeurs par défaut s’ils ne sont pas renseignés.
en-tête – En-tête de composant – title, description, create_button_texttableau – Affichage du tableauempty_messagecolumns.domain, columns.statusactions.configure_button_text, actions.verify_button_text, actions.delete_button_textcreate.modal – Créer un modal de domainetitlefield.label, field.placeholder, field.erroractions.cancel_button_text, actions.create_button_textverify.modal – Vérifier le modal du domainetitletxt_record_name.label, txt_record_content.label, verification_status.labelactions.verify_button_text, actions.done_button_textdelete.modal – Confirmation de suppressiontitledescription.pending, description.verifiedactions.cancel_button_text, actions.create_button_textconfigure.modal – Configuration du fournisseurtitle, descriptiontable.empty_message, table.columns.nameactions.close_button_textnotifications – Réponses APIdomain_create_success, domain_create_errordomain_verify_success, domain_delete_success
<DomainTable
  customMessages={{
    header: {
      title: « Gérer les domaines »,
      description: « Configurer et vérifier les domaines de lorganization »,
      create_button_text: « Ajouter un domaine »,
    },
    table: {
      empty_message: « Aucun domaine pour linstant. Ajoutez-en un pour commencer. »,
    },
    notifications: {
      domain_create_success: « Domaine ajouté avec succès! »,
      domain_verify_success: « Domaine vérifié! »,
      domain_delete_success: « Domaine supprimé. »,
    },
  }}
/>

style

Personnaliser l’apparence à l’aide de variables CSS et de remplacements de classe. Prend en charge les styles adaptés aux thèmes.
Variables – Propriétés personnalisées CSS – common – Appliqué à tous les thèmes – light – Thème clair uniquement – dark – Thème sombre uniquementClasses – Remplacements de classes des composantsDomainTable-headerDomainTable-tableDomainTable-createModalDomainTable-configureModalDomainTable-deleteModal
<DomainTable
  styling={{
    variables: {
      common: { "--font-size-title": "1rem" },
      light: { "--color-primary": "#4f46e5" },
    },
    classes: {
      "DomainTable-header": "mb-6",
      "DomainTable-table": "rounded-lg shadow-sm",
    },
  }}
/>

Personnalisation avancée

Le composant DomainTable est composé de sous-composants et de hooks plus petits. Vous pouvez les importer individuellement pour créer des flux de production de domaine personnalisés si vous utilisez shadcn.

Sous-composants disponibles

Pour les cas d’utilisation avancés, il est possible d’importer des sous-composants individuels afin de créer des interfaces de gestion de domaine personnalisées. Cela est utile lorsque vous devez intégrer des modaux particuliers dans différents contextes ou personnaliser la mise en page du tableau au-delà de ce que permettent les propriétés.
ComposantDescription
DomainCreateModalModal pour créer un domaine
DomainVerifyModalModal pour flux de vérification
DomainDeleteModalModal de confirmation de suppression
DomainConfigureProvidersModalGérer les associations de fournisseurs
DomainTableActionsColumnBoutons d’action pour chaque ligne de domaine

Hooks disponibles

Ces hooks fournissent la logique sous-jacente sans aucune interface utilisateur. Veuillez les utiliser pour créer des interfaces entièrement personnalisées tout en tirant parti de l’intégration de l’API Auth0.
HookDescription
useDomainTableCouche de données et d’API (récupération, création, vérification, suppression, association)
useDomainTableLogicÉtat d’interaction de l’interface utilisateur et gestionnaires (modaux, notifications)