セットアップ要件
Auth0の構成が必要 - テナントがMy Organization APIで構成されていることを
確認してください。セットアップガイドを表示
→
インストール
pnpm add @auth0/universal-components-react
shadcnコマンドを実行すると、共有ユーティリティとAuth0統合の@auth0/universal-components-core
依存関係もインストールされます。
クイックスタート
import { DomainTable } from "@auth0/universal-components-react/spa";
export function DomainsPage() {
return <DomainTable />;
}
この例ではReact SPAを使用していますが、props構成(schema、customMessages、stylingなど)はNext.jsやshadcnのセットアップにも同様に適用されます。
import React from "react";
import { DomainTable } from "@auth0/universal-components-react/spa";
import { Auth0Provider } from "@auth0/auth0-react";
import { Auth0ComponentProvider } from "@auth0/universal-components-react/spa";
import { useNavigate } from "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: "有効なドメイン(例:example.com)を入力してください",
},
},
}}
createAction={{
onBefore: (domain) => {
if (!domain.domain.includes(".")) {
alert("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(`${domain.domain}を削除しますか?`);
},
}}
onOpenProvider={(provider) => {
navigate(`/providers/${provider.id}`);
}}
onCreateProvider={() => {
navigate("/providers/create");
}}
customMessages={{
header: {
title: "ドメイン管理",
description: "Organizationのドメインを追加・検証",
create_button_text: "新しいドメインを追加",
},
}}
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 />
</Auth0ComponentProvider>
</Auth0Provider>
);
}
Props
Display Props
Display propsは、コンポーネントのレンダリングを制御します。その動作に影響することはありません。セクションを非表示にする場合、または読み取り専用モードを有効にする場合に使用します。
| Prop | 種類 | 説明 |
|---|
readOnly | boolean | すべてのドメイン操作を無効にします。デフォルト値:false |
hideHeader | boolean | ヘッダーセクションを非表示にします。デフォルト値:false |
Action Props
Action propsはユーザーインタラクションを処理し、ユーザーがドメイン操作を実行したときに何が起こるかを定義します。ライフサイクルフック(onBefore、onAfter)を使用して、アプリケーションのルーティングや分析と連携できます。
| Prop | 種類 | 説明 |
|---|
createAction | ComponentAction<Domain> | ドメインアクションを作成します。詳細 |
verifyAction | ComponentAction<Domain> | ドメインアクションを検証します。詳細 |
deleteAction | ComponentAction<Domain> | ドメインアクションを削除します。詳細 |
associateToProviderAction | ComponentAction<Domain, IdentityProvider> | ドメインをプロバイダーに関連付けます。詳細 |
deleteFromProviderAction | ComponentAction<Domain, IdentityProvider> | ドメインをプロバイダーから削除します。詳細 |
onOpenProvider | (provider: IdentityProvider) => void | 構成モーダルからプロバイダーへ移動します。 詳細 |
onCreateProvider | () => void | プロバイダー作成フローに移動します。詳細 |
createAction
種類: ComponentAction<Domain>
ドメイン作成フローを制御します。新しいドメインが追加されたときは、onAfterを使用して追跡します。
プロパティ:
disabled - [ドメインを追加]ボタンを無効にします
onBefore(domain) - ドメインの作成前に実行します。作成を防ぐ場合はfalseを返します(ドメインの形式が無効な場合など)。
onAfter(domain) - ドメインが正常に作成された後で実行します。通知を表示する場合、またはイベントを追跡する場合に使用します。
例:
<DomainTable
createAction={{
onBefore: (domain) => {
// Validate domain format
if (!domain.domain.includes(".")) {
alert("有効なドメインを入力してください");
return false;
}
return true;
},
onAfter: (domain) => {
analytics.track("Domain Created", { domain: domain.domain });
},
}}
/>
verifyAction
種類: ComponentAction<Domain>
ドメイン検証フローを制御します。ドメイン検証は、DNS TXTレコードを介して所有権を証明します。
プロパティ:
disabled -[検証]ボタンを無効にします
onBefore(domain) - 検証を試行する前に実行します。検証を防ぐ場合はfalseを返します(DNSの設定を確認する場合など)。
onAfter(domain) - ドメインが正常に検証された後で実行します。成功通知を表示する場合に使用します。
例:
<DomainTable
verifyAction={{
onBefore: (domain) => {
return confirm(
`${domain.domain}を検証しますか?DNSレコードが構成されていることを確認してください。`,
);
},
onAfter: (domain) => {
toast.success(`${domain.domain}が正常に検証されました。`);
},
}}
/>
deleteAction
種類: ComponentAction<Domain>
ドメイン削除を制御します。これは破壊的な操作であるため、確認にはonBeforeの使用を推奨します。
プロパティ:
disabled -[削除]ボタンを無効にします
onBefore(domain) - 削除の前に実行します。削除を防ぐ場合はfalseを返します(確認ダイアログで推奨)。
onAfter(domain) - ドメインが正常に削除された後で実行します。イベントを追跡したり、通知を表示したりする場合に使用します。
例:
<DomainTable
deleteAction={{
onBefore: (domain) => {
return confirm(`${domain.domain}を削除しますか?この操作は元に戻せません。`);
},
onAfter: (domain) => {
analytics.track("Domain Deleted", { domain: domain.domain });
},
}}
/>
associateToProviderAction
種類: ComponentAction<Domain, IdentityProvider>
検証済みドメインのSSOプロバイダーとの関連付けを制御します。関連付けられるのは検証済みドメインだけです。
プロパティ:
disabled - 関連付けアクションを無効にします
onBefore(domain, provider) - 関連付けの前に実行します。関連付けを防ぐ場合はfalseを返します。
onAfter(domain, provider) - ドメインが正常にプロバイダーに関連付けられた後で実行します。
例:
<DomainTable
associateToProviderAction={{
onAfter: (domain, provider) => {
console.log(`Associated ${domain.domain} with ${provider.name}`);
},
}}
/>
deleteFromProviderAction
種類: ComponentAction<Domain, IdentityProvider>
ドメインとSSOプロバイダーの関連付けの削除を制御します。
プロパティ:
disabled - 関連付け解除アクションを無効にします
onBefore(domain, provider) - 削除の前に実行します。削除を防ぐ場合はfalseを返します。
onAfter(domain, provider) - ドメインが正常にプロバイダーから削除された後で実行します。
onOpenProvider / onCreateProvider
種類: (provider: IdentityProvider) => void / () => void
ドメイン構成モーダルのナビゲーションハンドラー。ユーザーがドメインのプロバイダー関連付けを構成する際:
onOpenProvider - ユーザーが既存のプロバイダーをクリックして表示/編集すると呼び出されます
onCreateProvider - ユーザーがクリックして新しいプロバイダーを作成すると呼び出されます
例:
<DomainTable
onOpenProvider={(provider) => {
navigate(`/providers/${provider.id}`);
}}
onCreateProvider={() => {
navigate("/providers/create");
}}
/>
Customization Props
Customization propsを使うと、ソースコードに変更を加えることなく、コンポーネントをブランド・ロケール・検証要件に合わせることができます。
| Prop | 種類 | 説明 |
|---|
schema | DomainTableSchema | ドメインURLの検証ルール。詳細 |
customMessages | Partial<DomainTableMainMessages> | i18nテキストのオーバーライド。詳細 |
styling | ComponentStyling | CSS変数とクラスのオーバーライド。詳細 |
schema
ドメインURL入力用にカスタム検証ルールを設定します。
create.domainUrl - ドメインURL検証 - regex - カスタムのregexのパターン
errorMessage - カスタムエラーメッセージ
<DomainTable
schema={{
create: {
domain: {
regex: /^[a-z0-9.-]+\.[a-z]{2,}$/,
errorMessage: "有効なドメイン(例:example.com)を入力してください。",
},
},
}}
/>
customMessages
すべてのテキストと翻訳をカスタマイズします。フィールドはすべて任意で、入力しなかった場合はデフォルト値が使用されます。
header - コンポーネントヘッダー
title, description, create_button_text
table - 表の表示
empty_message
columns.domain, columns.status
actions.configure_button_text, actions.verify_button_text, actions.delete_button_text
create.modal - ドメイン作成モーダル
title
field.label, field.placeholder, field.error
actions.cancel_button_text, actions.create_button_text
verify.modal - ドメイン検証モーダル
title
txt_record_name.label, txt_record_content.label, verification_status.label
actions.verify_button_text, actions.done_button_text
delete.modal - 削除確認
title
description.pending, description.verified
actions.cancel_button_text, actions.create_button_text
configure.modal - プロバイダー構成
title, description
table.empty_message, table.columns.name
actions.close_button_text
notifications - APIリスポンス
domain_create_success, domain_create_error
domain_verify_success, domain_delete_success
<DomainTable
customMessages={{
header: {
title: "ドメイン管理",
description: "Organizationのドメインの構成と検証",
create_button_text: "ドメインを追加",
},
table: {
empty_message: "まだドメインがありません。追加して開始してください。",
},
notifications: {
domain_create_success: "ドメインが正常に追加されました",
domain_verify_success: "ドメインが検証されました",
domain_delete_success: "ドメインが削除されました",
},
}}
/>
styling
CSS変数とクラスのオーバーライドを使って外観をカスタマイズします。テーマ認識型のスタイルをサポートします。
Variables - CSSカスタムプロパティ
common - すべてのテーマに適用
light - ライトテーマのみ
dark - ダークテーマのみ
Classes - コンポーネントクラスのオーバーライド
DomainTable-header
DomainTable-table
DomainTable-createModal
DomainTable-configureModal
DomainTable-deleteModal
<DomainTable
styling={{
variables: {
common: { "--font-size-title": "1rem" },
light: { "--color-primary": "#4f46e5" },
},
classes: {
"DomainTable-header": "mb-6",
"DomainTable-table": "rounded-lg shadow-sm",
},
}}
/>
高度なカスタマイズ
DomainTableコンポーネントは、小さいサブコンポーネントとフックで構成されます。shadcnを使用する場合は、個別にインポートしてカスタムドメインワークフローを構築できます。
利用可能なサブコンポーネント
高度なユースケースの場合は、個々のサブコンポーネントをインポートしてカスタムドメイン管理インターフェイスを構築できます。これは、異なるコンテキストで特定のモーダルを埋め込む必要がある場合や、propsで可能な範囲を超えてテーブルレイアウトをカスタマイズする場合に便利です。
| コンポーネント | 説明 |
|---|
DomainCreateModal | ドメイン作成のためのモーダル |
DomainVerifyModal | 検証フローのモーダル |
DomainDeleteModal | 削除確認モーダル |
DomainConfigureProvidersModal | プロバイダーの関連付けを管理 |
DomainTableActionsColumn | 各ドメイン行のアクションボタン |
利用可能なフック
これらのフックは、UIなしで基盤となるロジックを提供します。フックを使用することで、Auth0 API統合を活用しながら、完全にカスタムのインターフェイスを構築できます。
| フック | 説明 |
|---|
useDomainTable | データ+APIレイヤー(取得、作成、検証、削除、関連付け) |
useDomainTableLogic | UIインタラクションの状態 + ハンドラー(モーダル、通知) |