メール/パスワードユーザーの管理 - Node.js SDK
項目一覧
新しいユーザー アカウントの登録
新しいメール/パスワード ユーザーを登録するには、ユーザーのメールアドレスとご希望のパスワードを EmailPasswordAuth.registerUser()に渡します。 メールアドレスは別のメールまたはパスワードユーザーと関連付けることはできず、パスワードは6 128文字から 文字の間である必要があります。
await app.emailPasswordAuth.registerUser({ email: "someone@example.com", password: "Pa55w0rd!", });
新しいユーザーのメールアドレスの確認
プロバイダーが新規ユーザーを自動的に確認するように設定されていない限り、新規ユーザーはアプリにログインする前に自分のメールアドレスを確認する必要があります。
ユーザー確認の完了
登録ユーザーの有効な token
とtokenId
が必要であり、これらを確認してログインできるようにします。 これらの値は、プロバイダーの構成に応じて、異なる場所で使用できます。
プロバイダーが確認メール を送信するように設定されている場合、
token
とtokenId
の値はクエリ パラメータとして Email Confirmation URLに含まれます。プロバイダーが確認関数 を実行するように設定されている場合、
token
とtokenId
の値は引数として関数に渡されます。
登録済みユーザーを確認するには、有効なtoken
とtokenId
をEmailPasswordAuth.confirmUser() に渡します。
const token = "someToken"; const tokenId = "someTokenId"; try { await app.emailPasswordAuth.confirmUser({ token, tokenId }); // User email address confirmed. console.log("Successfully confirmed user."); } catch (err) { console.log(`User confirmation failed: ${err}`); }
ユーザー確認方法の再試行
SDK は、ユーザー確認のメールを再送信したり、カスタム確認方法を再試行したりする方法を提供します。
確認メールの再送信
プロバイダーが確認メール を送信するように設定されている場合、Atlas App Services はユーザーが登録すると確認メールを自動的に送信します。 メールには、 30分間有効なトークンを使用して構成されたEmail Confirmation URLへのリンクが含まれています。 ユーザーが期間内にリンクに従って確認しない場合は、新しい確認メールをリクエストする必要があります。
ユーザーに新しい確認メールを送信するには、ユーザーのメールアドレスをEmailPasswordAuth.resendConfirmationEmail() に渡します。
const email = "someone@example.com"; await app.emailPasswordAuth.resendConfirmation({ email });
ユーザー確認機能の再試行
カスタム確認関数を再実行するには、ユーザーのメールアドレスを指定してretryCustomConfirmation()
メソッドを呼び出します。
const email = "someone@example.com"; await app.emailPasswordAuth.retryCustomConfirmation({ email });
ユーザーのパスワードのリセット
ユーザーのパスワードのリセットは複数段階のプロセスです。
クライアント アプリで、ユーザーがパスワードをリセットするための UI を提供します。 その後、App Services App はメールを送信するか、カスタム関数を実行してユーザーの ID を確認できます。
ユーザーの ID を確認した後、パスワード再設定リクエストを完了できます。
パスワードのリセットが完了すると、ユーザーは新しいパスワードを使用してログできます。
次の方法で、希望するパスワード リセット方法を選択します。
Atlas App Services アプリ
Authentication
Authentication Providers
Email/Password - をクリックし、 EDITボタンを押します
パスワード リセット メールの送信
ユーザーの ID を確認するためにパスワード リセット メールを送信するには、パスワード リセット メールを送信するようにアプリを設定する必要があります。
パスワード リセット プロセスを開始するには、ユーザーのメールを指定してEmailPasswordAuth.sendResetPasswordEmail()を呼び出します。 メールには、構成されたPassword Reset URLへのリンクが含まれています。 ユーザーは30分以内にこの URL にアクセスする必要があります。
const email = "someone@example.com"; await app.emailPasswordAuth.sendResetPasswordEmail({ email });
ユーザーがパスワード リセット メールの URL にアクセスした後、ユーザーのメール、新しいパスワード、一意の URL に指定されたtoken
とtokenId
を使用して、 EmailPasswordAuth.resetPassword()を呼び出します。
await app.emailPasswordAuth.resetPassword({ password: "newPassw0rd", token, tokenId, });
ユーザーが 30 分以内にパスワード リセット メールの URL にアクセスしない場合、 token
とtokenId
は期限切れになります。 パスワードのリセット プロセスを再度開始する必要があります。
パスワード リセット機能の呼び出し
パスワードリセット機能 を実行するようにアプリを構成するときは、 EmailPasswordAuth.colResetPasswordFunction() を呼び出すときに実行する関数を定義します。
この関数は、ユーザー名、パスワード、および任意の数の追加引数を指定できます。 これらの引数を使用して、セキュリティの質問の回答やその他のチャレンジにユーザーがパスワード リセットを正常に完了するために渡す必要があるものなどの詳細を指定できます。
独自のパスワード リセット フローを定義する場合は、カスタム パスワード リセット機能を使用することをお勧めします。 For example, you might send a custom password reset email from a specific domain. または、メール以外のサービスを使用してユーザーの ID を確認することもできます。
Atlas App Services 側では、このメソッドを呼び出すときに実行されるカスタム パスワード リセット機能を定義します。 この関数は、次の 3 つのステータスのいずれかを返すことができます。
fail
pending
success
fail
ステータスは SDK によってエラーとして扱われます。 SDK callResetPasswordFunction()
は戻り値を取らないため、クライアントにpending
またはsuccess
ステータスを返すことはありません。
サーバー側の保留中のケース
ユーザーに本人確認を行うために追加の手順を実行したい場合、 App Services のパスワード リセット関数によりpending
が返されることがあります。 ただし、その戻り値は SDK のcallResetPasswordFunction()
に渡されないため、クライアントアプリはpending
ステータスを処理するために独自のロジックを実装する必要があります。
const email = "someone@example.com"; // The new password to use const password = "newPassw0rd"; // Additional arguments for the reset function const args = []; await app.emailPasswordAuth.callResetPasswordFunction( { email, password }, args );
サーバー側関数により、カスタム メール プロバイダーを使用してメールが送信される場合があります。 または、SMS を使用して、テキスト メッセージでユーザーの ID を確認することもできます。
App Services のパスワード リセット関数のコンテキストで、 token
とtokenId
にアクセスできます。 App Services のパスワード リセット機能からこの情報を渡す場合、プラットフォーム固有のディープ リンクまたはユニバーサル リンクを使用してこれらの値をアプリに渡すことができます。 その後、クライアント アプリケーションはEmailPasswordAuth.resetPassword()を呼び出してパスワード リセット フローを完了できます。
await app.emailPasswordAuth.resetPassword({ password: "newPassw0rd", token, tokenId, });
サーバー側の成功例
App Services のパスワード リセット関数が関数内で追加の検証を行う場合、またはパスワードのリセットを試みる前にユーザーの ID を検証した場合は、 success
を返すように App Services 関数を構成できます。 ただし、その戻り値は SDK のcallResetPasswordFunction()
に渡されないため、クライアントアプリはsuccess
ステータスを処理するために独自のロジックを実装する必要があります。
この例では 関数を呼び出すと、パスワード リセット プロセス全体が実行されます。
const email = "someone@example.com"; // The new password to use const password = "newPassw0rd"; // Additional arguments for the reset function const args = []; await app.emailPasswordAuth.callResetPasswordFunction( { email, password }, args );