> ## 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>
  組織にユーザーを招待する方法をお探しの場合は、代わりに [組織メンバーを招待する](/ja/docs/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 プロバイダー](/ja/docs/customize/email/smtp-email-providers)を使用して招待メールを送信できます。

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

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

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

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

[Liquid を使用](/ja/docs/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 の手順については、[Universal Login をカスタマイズする](/ja/docs/customize/login-pages/universal-login) を参照してください。Classic Login の手順については、[パスワードリセットページをカスタマイズする](/ja/docs/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 を作成](/ja/docs/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 データベースユーザーを作成する](/ja/docs/authenticate/database-connections)か、Management API の [Create a User エンドポイント](https://auth0.com/docs/api/management/v2/#!/Users/post_users)を使用し、次のように設定します。

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

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

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

<div id="learn-more">
  ## 詳細情報
</div>

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

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

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

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

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

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