> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# パスワード再設定メールを使ってアプリケーション登録向けのユーザー招待を実装する

> Auth0 アプリケーションで、ユーザーをアカウント登録に招待する仕組みを実装する方法。

<Warning>
  ユーザーを Organization に招待する方法をお探しの場合は、代わりに [Invite Organization Members](/docs/ja-jp/manage-users/organizations/configure-organizations/invite-members) をご覧ください。
</Warning>

Auth0 アプリケーションの登録を管理する方法の 1 つに、ユーザー招待があります。

一般的なユーザー招待のワークフローでは、アプリケーション管理者が新しいユーザーアカウントを作成し、その後、アクティベーションリンクを含む招待メールをユーザーに送信します。ユーザーはそのリンクからパスワードを設定し、その後ログインできるようになります。

ユーザー招待システムは、登録を制限したい場合や、アカウントをまとめて作成したい場合などのユースケースで役立ちます。

<div id="implementing-user-invitations-for-application-sign-up-on-auth0">
  ## Auth0 でアプリケーション登録用のユーザー招待を実装する
</div>

Auth0 では、パスワード変更ワークフローを使用してユーザー招待を実装できます。

* Universal Login または Classic Login のパスワードリセットページを、ユーザー招待にも対応できるようにスタイル設定することで、パスワード変更リンクを新規ユーザーアカウントへの招待として利用できます。

* 同様に、パスワード変更メールテンプレートをカスタマイズすることで、Auth0 のパスワード変更ワークフローを使ってパスワード変更リンクを生成し、テナントの[設定済み SMTP プロバイダー](/docs/ja-jp/customize/email/smtp-email-providers)を使用して招待メールを送信できます。

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  すでに外部のメールソリューションがあり、テナントで SMTP プロバイダーを設定したくない場合は、[Management API を使用してパスワード変更チケットを生成し](https://auth0.com/docs/api/management/v2/tickets/post-password-change)、Auth0 のメールテンプレートやワークフローを使わずに、チケットのリンクを自分でユーザーにメール送信することもできます。
</Callout>

この実装では、ユーザーに未対応の招待があることを示すユーザーメタデータのプロパティ (この手順では `user.app_metadata.needsInvitation` という名前) を利用します。これが `true` の場合、ユーザーには招待用の画面が表示され、それ以外の場合は通常のパスワードリセット画面が表示されます。

<div id="1-customize-the-password-change-email-template">
  ### 1. パスワード変更メールテンプレートをカスタマイズする
</div>

まず、ユーザー招待とパスワード変更の両方のフローに対応できるように、[パスワード変更 (リンク) メールテンプレートをカスタマイズ](/docs/ja-jp/customize/email/email-templates/customize-email-templates)します。

[Liquid を使用](/docs/ja-jp/customize/email/email-templates/supported-liquid-syntax)して、未対応の招待に関するユーザーメタデータのプロパティが設定されているかどうかを確認し、適切なメッセージを送信します。たとえば、次のようになります。

```liquid lines theme={null}
{% if user.app_metadata.needsInvitation %}
    // ユーザー招待メールの内容をここに記述
{% else %}
    // パスワード変更メールの内容をここに記述
{% endif %}
```

さらに、メッセージ本文内のパスワードリセットリンクにクエリパラメータを追加して、パスワードリセットページでユーザーに表示する画面を指定します。たとえば、`type=invite` や `type=reset` を追加できます。

<div id="2-style-the-password-reset-page">
  ### 2. パスワードリセットページのスタイルを設定する
</div>

テンプレートで設定したクエリパラメータに基づいて、ユーザー招待とパスワード変更の両方のワークフローに対応できるよう、パスワードリセットページのスタイルを設定します。

Universal Login の手順については、[Customize Universal Login](/docs/ja-jp/customize/login-pages/universal-login)を参照してください。Classic Login の手順については、[Customize Password Reset Page](/docs/ja-jp/customize/login-pages/classic-login/customize-password-reset-page)を参照してください。

<div id="3-create-a-post-login-action-to-unset-the-invitation-property">
  ### 3. 招待プロパティを解除するための post-login Action を作成する
</div>

ユーザーがパスワードを設定して初回ログインを完了すると、招待は不要になるため、以後はパスワード変更のフローを表示する必要があります。

これに対応するには、`user.app_metadata.needsInvitation` を `false` に設定する [post-login Action を作成します](/docs/ja-jp/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger):

```javascript theme={null}
exports.onExecutePostLogin = async (event, api) => {
    if (event.user.app_metadata.needsInvitation) {
        api.user.setAppMetadata("needsInvitation", false);
    }
};
```

<div id="4-send-user-invitations">
  ### 4. ユーザー招待を送信する
</div>

ユーザー招待を送信するには、[ダッシュボードで新しい Auth0 データベースユーザーを作成する](/docs/ja-jp/authenticate/database-connections) か、Management API の [Create a User endpoint](https://auth0.com/docs/api/management/v2/#!/Users/post_users) を使用し、次のように設定します。

* `user.email_verified` パラメーターを `false` に設定します。

* `user.app_metadata.needsInvitation` を `true` に設定します。

その後、Authentication API の [Change password endpoint](https://auth0.com/docs/api/authentication/change-password/change-password) を呼び出して、ユーザーに招待メールを送信します。

<div id="learn-more">
  ## 詳細はこちら
</div>

ユーザーがパスワードを設定した後のリダイレクト先を制御するには、次のように設定します。

* Universal Login の場合は、[パスワードリセットフローのログインルートをカスタマイズします](/docs/ja-jp/authenticate/login/auth0-universal-login/configure-default-login-routes#complete-password-reset-flow)。

* Classic Login の場合は、メールテンプレートの **Redirect To** フィールドを設定します。

メール設定の詳細については、以下を参照してください。

* [メールテンプレートをカスタマイズする](/docs/ja-jp/customize/email/email-templates)

* [外部 SMTP メールプロバイダーを設定する](/docs/ja-jp/customize/email/smtp-email-providers)
