パスワードでのサインアップを構築する

Before you start

以下が必要です。

  • ユニバーサルログインを構成済みのAuth0の開発テナント

  • カスタムドメインを構成済みのアプリケーション

  • ローカルホスト上で実行されている開発アプリまたはサンプルアプリ(Reactのサンプルアプリなど)

  • パスワードを使用するデータベース接続

このガイドの終わりには、カスタマイズしたサインアップ画面のあるIdentity Firstフローが完成します。詳細については、「使用の開始ガイド」をお読みの上で、「SDKリファレンスガイド」を参照してください。

セットアップする

Auth0 DashboardユニバーサルログインIdentifier First認証、パスワードを使用するデータベース接続をセットアップします。

シングルページアプリケーションを実行して、カスタムログイン画面を構築します。高度なカスタマイズインターフェイスのコンテキストを理解するには、Auth0が提供するボイラープレートアプリをクローンしてください:git clone https://github.com/auth0/auth0-acul-react-boilerplate

ACUL SDKをインストールします。Reactのボイラープレートをクローンしたら、ディレクトリをauth0-acul-react-boilerplateに変更して、SDKをインストールします。

// open the directory where you git clone the boilerplate
cd auth0-acul-react-boilerplate && npm i
// Install the ACUL JS SDK
npm install @auth0/auth0-acul-js

Was this helpful?

/

1. signup画面を構築する

Signup ID

以下は完全な画面の例です。

/

import { ChangeEvent } from "react";
import { Signup as ScreenProvider } from "@auth0/auth0-acul-js";

// UI Components
import { Label } from "@/components/ui/label";
import { Input } from "@/components/ui/input";
import { Button } from "@/components/ui/button";
import { Text } from "@/components/ui/text";
import { Link } from "@/components/ui/link";
import {
  CardHeader,
  CardTitle,
  CardDescription,
  CardContent,
} from "@/components/ui/card";

export default function Signup() {
  // Initialize the SDK for this screen
  const screenProvider = new ScreenProvider();

  // Handle the submit action
  const formSubmitHandler = (event: ChangeEvent<HTMLFormElement>) => {
    event.preventDefault();

    // grab the value from the form
    const identifierInput = event.target.querySelector(
      "input#identifier"
    ) as HTMLInputElement;
    const passwordInput = event.target.querySelector(
      "input#password"
    ) as HTMLInputElement;

    screenProvider.signup({
      email: identifierInput?.value,
      password: passwordInput?.value,
    });
  };

  // Render the form
  return (
    <form noValidate onSubmit={formSubmitHandler}>
      <CardHeader>
        <CardTitle className="mb-2 text-3xl font-medium text-center">
          {screenProvider.screen.texts?.title ?? "Welcome"}
        </CardTitle>
        <CardDescription className="mb-8 text-center">
          {screenProvider.screen.texts?.description ?? "Create your account"}
        </CardDescription>
      </CardHeader>
      <CardContent>
        <div className="mb-2 space-y-2">
          <Label htmlFor="identifier">
            {screenProvider.screen.texts?.emailPlaceholder ??
              "Enter your email"}
          </Label>
          <Input
            type="text"
            id="identifier"
            name="identifier"
            defaultValue={
              screenProvider.screen.data?.email ??
              screenProvider.untrustedData.submittedFormData?.email
            }
          />
        </div>
        <div className="mb-2 space-y-2">
          <Label htmlFor="password">
            {screenProvider.screen.texts?.passwordPlaceholder ?? "Password"}
          </Label>
          <Input type="password" id="password" name="password" />
        </div>
        <Button type="submit" className="w-full">
          {screenProvider.screen.texts?.buttonText ?? "Continue"}
        </Button>
        <Text>
          {screenProvider.screen.texts?.footerText ??
            "Already have an account?"}
          <Link className="ml-1" href={screenProvider.screen.links?.login ?? "#"}>
            {screenProvider.screen.texts?.footerLinkText ??
              "Log into your account"}
          </Link>
        </Text>
      </CardContent>
    </form>
  );
}

Was this helpful?

/

SDKをインポートして初期化する

auth0-acul-react-boilerplate/srcフォルダー内に「screens」という名前のフォルダーと「Login.tsx」という名前のファイルを作成します。SDKをインポートして、Reactコンポーネント内で画面にSDKを初期化します。

import { Signup as ScreenProvider } from "@auth0/auth0-acul-js";

export default function Signup() {
  // Initialize the SDK for this screen
  const screenProvider = new ScreenProvider();
  ...
 }

Was this helpful?

/

SDKで画面のプロパティやメソッドにアクセスする

SDKを使用すると、画面のプロパティやメソッドにアクセスできます。Auth0 ACUL JS SDKにはデータにアクセスするためのプロパティとメソッドがあります。

コンテキストデータの詳細については、「ユニバーサルログインのコンテキストデータ」をお読みください。

<form noValidate onSubmit={formSubmitHandler}>
      ...
      <CardContent>
        <div className="mb-2 space-y-2">
          <Label htmlFor="identifier">
            {screenProvider.screen.texts?.emailPlaceholder ??
              "Enter your email"}
          </Label>
          <Input
            type="text"
            id="identifier"
            name="identifier"
            defaultValue={
              screenProvider.screen.data?.email ??
              screenProvider.untrustedData.submittedFormData?.email
            }
          />
        </div>
        <div className="mb-2 space-y-2">
          <Label htmlFor="password">
            {screenProvider.screen.texts?.passwordPlaceholder ?? "Password"}
          </Label>
          <Input type="password" id="password" name="password" />
        </div>
        <Button type="submit" className="w-full">
          {screenProvider.screen.texts?.buttonText ?? "Continue"}
        </Button>
      ...
      </CardContent>
    </form>
  );
}

Was this helpful?

/

送信アクションを呼び出す

SDKを使用して、画面で捉えたデータをサーバーに送信します。サーバーはこのデータを処理し、フローにある次の手順にユーザーを進めます。エラーがあれば画面を再度読み込んで、ユーザーにエラーのある箇所を示します。エラーはSDKからアクセスされます。

const formSubmitHandler = (event: ChangeEvent<HTMLFormElement>) => {
    event.preventDefault();

    // grab the value from the form
    const identifierInput = event.target.querySelector(
      "input#identifier"
    ) as HTMLInputElement;
    const passwordInput = event.target.querySelector(
      "input#password"
    ) as HTMLInputElement;

    screenProvider.signup({
      email: identifierInput?.value,
      password: passwordInput?.value,
    });
  };

Was this helpful?

/

2. ACULにローカルアセットの使用を構成する

Auth0 CLI、Terraform、またはManagement APIを使用してACULを有効化します。構成可能な項目については、「ACUL画面を構成する」をお読みください。

プロジェクトのルートディレクトリにsettingsフォルダーを作成して、{SCREENNAME}.jsonファイルを格納します。

//settings.json
{
  "rendering_mode": "advanced",
  "context_configuration": [
    "screen.texts"
  ],
  "default_head_tags_disabled": false,
  "head_tags": [
    {
      "attributes": {
        "async": true,
        "defer": true,
        "integrity": [
          "ASSET_SHA"
        ],
        "src": "http://127.0.0.1:8080/index.js"
      },
      "tag": "script"
    },
    {
      "attributes": {
        "href": "http://127.0.0.1:8080/index.css",
        "rel": "stylesheet"
      },
      "tag": "link"
    }
  ]
}

Was this helpful?

/
 Auth0 CLIでACULを有効にするには以下を行います。

auth0 ul customize --rendering-mode advanced --prompt {SCREENNAME} --screen {SCREENNAME} --settings-file ./settings/{SCREENNAME}.json

Was this helpful?

/

ローカルサーバーで構成を構築する

ACULではアセットを公開URLでホストする必要があります。アセットをデプロイする前に、ローカルサーバーを実行してアセットをテストしてください。

npm run build

cd dist
npx serve -p 8080 // serve the assets on your local machine

Was this helpful?

/

3. ローカルサーバーで構成をテストする

ユニバーサルログインの高度なカスタマイズは、ViteやWebpackなどを含むすべてのModern Javascriptバンドルで動作します。詳細については、「高度なカスタマイズを運用にデプロイする」をお読みください。

テナントにACULをデプロイする詳細については、「ACUL画面を構成する」をお読みください。

関連コンテンツ

トピック 説明                               
ユニバーサルログインの高度なカスタマイズ 高度なカスタマイズの仕組みを説明します。
高度なカスタマイズの使用を開始する 高度なカスタマイズの入門ガイドです。
ユニバーサルログインの高度なカスタマイズ:画面 高度なカスタマイズに利用可能な画面のリストです。