---
sidebar_position: 2
title: "ログインと認証"
---

# ログインと認証

## 概要

このガイドでは、カスタマーポータルへのサインイン方法、2段階ログインフロー（パスワード入力後のワンタイムコード）、パスワードを忘れた場合の対処法、セッションタイムアウトの処理について説明します。ポータルはセキュリティのためメールアドレス＋パスワード認証と必須のOTP（ワンタイムパスワード）認証ステップを使用します。

## ポータルフロー

### サインイン

1. `/auth/login` のログインページに移動します。ページタイトルは**「Welcome back」**（おかえりなさい）で、「Sign in to your Assist Solutions account.」（Assist Solutionsアカウントにサインイン）というサブタイトルが表示されます。
2. 以下のフィールドを持つフォームが表示されます：
   - **Email Address**（メールアドレス）（必須）
   - **Password**（パスワード）（必須）
   - **Remember me**（ログイン状態を保持）チェックボックス
3. フォームの下にリンクがあります：
   - **Forgot your password?** — パスワードリセットフローへ
   - **Don't have an account? Get started** — 登録フローへ
   - **Existing customer? Transfer your account** — 登録/移行フローへ
4. メールアドレスとパスワードを入力し、**Sign in**（サインイン）をクリックします。

### OTP認証（第2ステップ）

有効な認証情報を入力した後、ポータルはすぐにログインしません。代わりに：

1. ページが**「Check your email」**（メールを確認してください）とメールアイコンの表示に変わります。
2. 「We sent a verification code to [マスクされたメール]」（認証コードを送信しました）というメッセージが表示されます（例：`t***@example.com`）。
3. 6桁のOTP入力フィールドが表示されます。
4. コードの有効期限までのカウントダウンタイマーがMM:SS形式で表示されます。
5. 6桁のコードを入力します。6桁すべて入力すると自動送信されるか、手動で**Verify and Sign In**（認証してサインイン）をクリックできます。
6. 入力の下に**「Remember this device for 7 days」**（このデバイスを7日間記憶する）チェックボックスがあります。チェックすると、7日間このデバイスでOTPの入力が不要になります。
7. コードが期限切れになると「Code expired. Please go back and try again.」（コードの期限が切れました。戻ってやり直してください）というメッセージが表示されます。
8. **Back to login**（ログインに戻る）リンクで認証情報入力ステップに戻れます。
9. 下部にヘルプメッセージ「Didn't receive the code? Check your spam folder or go back to try again.」（コードが届きませんか？迷惑メールフォルダを確認するか、戻ってやり直してください）が表示されます。

### ログイン成功後

- OTPが認証されると、**「Redirecting to dashboard...」**（ダッシュボードにリダイレクト中...）というローディングオーバーレイが短時間表示されます。
- `/account` のアカウントダッシュボードにリダイレクトされます。
- ログインにリダイレクトされる前に特定のページにアクセスしようとしていた場合、ダッシュボードではなくそのページに戻ります。

### ログインエラーメッセージ

- 間違った認証情報を入力すると、フォームにエラーメッセージが表示されます。
- アカウントがロックされているか、サーバーの問題がある場合、適切なエラーメッセージが表示されます。
- ログアウト後にログインページに到達した場合、上部にバナーが表示されます：
  - **セッション期限切れ**（黄色警告）：「For your security, your session expired. Please sign in again to continue.」
  - **安全のためサインアウト**（赤色エラー）：「We detected a security change and signed you out. Please sign in again to verify your session.」
  - **サインアウト**（青色情報）：「You have been signed out. Sign in again whenever you're ready.」

### パスワードを忘れた場合のフロー

1. ログインページから**Forgot your password?**をクリックします。
2. **「Forgot password」**（パスワードをお忘れですか）ページに移動します。
3. メールアドレスを入力し、**Send reset link**（リセットリンクを送信）をクリックします。
4. システムがそのアドレスにパスワードリセットメールを送信します。
5. 下部に**Back to login**（ログインに戻る）リンクがあります。

### パスワードリセットフロー

1. メールからリセットリンクを開きます（`/auth/reset-password?token=...` に移動）。
2. ページタイトルは**「Reset your password」**（パスワードをリセット）です。
3. 以下のフィールドが表示されます：
   - **New password**（新しいパスワード）（必須）
   - **Confirm password**（パスワード確認）（必須）
4. 新しいパスワードを入力・確認し、**Update password**（パスワードを更新）をクリックします。
5. リセットリンクが欠落または期限切れの場合、メッセージが表示されます。**Request new reset link**（新しいリセットリンクをリクエスト）ボタンで新しいリンクを取得できます。
6. 下部に**Back to login**（ログインに戻る）リンクがあります。

### セッション動作

ポータルはログインセッションを自動的に管理します：

- **自動更新**：システムは4分ごとにセッションを確認し、期限が近い場合はバックグラウンドで更新します。
- **タブフォーカス更新**：ポータルタブに戻ったとき、必要に応じてセッションを確認・更新します。
- **セッションタイムアウト警告**：セッション期限の約5分前にポップアップダイアログが表示されます。タイトルは**「Session Expiring Soon」**（セッションがまもなく期限切れ）で、残り時間と2つのボタンが表示されます：
  - **Extend Session** — セッションを延長
  - **Logout Now** — 即座にログアウト
- **セッション期限切れ**：警告に応答せずセッションが期限切れになると、自動的にログアウトされ「Session Expired」バナーのあるログインページにリダイレクトされます。

### ログアウト

- アカウントメニューからいつでもログアウトできます。
- ログアウト後、「Signed Out」情報バナーのあるログインページにリダイレクトされます。

## WHMCSで起こること

ログインと認証はカスタマーポータルで完全に処理されます。WHMCSはログインプロセスに関与しません。

- ユーザーがログイン、ログアウト、またはパスワードリセットした際にWHMCSでレコードが作成または更新されることはありません。
- ポータルのパスワードはWHMCSのパスワードとは別に保存されます。ポータルのパスワードを変更しても、ユーザーのWHMCSパスワードには影響しません。

## Salesforceで起こること

ログインと認証はカスタマーポータルで完全に処理されます。Salesforceはログインプロセスに関与しません。

- ユーザーがログイン、ログアウト、またはパスワードリセットした際にSalesforceでレコードが作成または更新されることはありません。

## 確認すべき重要事項

- **正常系ログイン**：有効なメールとパスワードを入力、OTPを受信・入力し、ダッシュボードに到達することを確認。
- **間違ったパスワード**：間違ったパスワードを入力し、エラーメッセージが表示されることを確認。OTPステップに到達しないはずです。
- **間違ったOTP**：正しいパスワード入力後、間違ったOTPコードを入力。エラーメッセージが表示されることを確認。
- **期限切れOTP**：OTPカウントダウンがゼロになるまで待つ。「Code expired」メッセージが表示されることを確認。
- **デバイス記憶**：OTP時に「Remember this device for 7 days」をチェック。ログアウトして再ログインし、同じブラウザでOTPが要求されないことを確認。
- **パスワード忘れフロー**：「Forgot your password?」をクリック、メールを入力、リセットメールが送信されることを確認。リセットリンクを開き、新しいパスワードを設定し、新しいパスワードでログインできることを確認。
- **期限切れリセットリンク**：古いまたは無効なリセットリンクを使用。エラーメッセージが表示されることを確認。
- **セッションタイムアウト**：セッションタイムアウト警告が表示されるまでアクティビティなしでログイン状態を維持。「Extend Session」をクリックしてセッションが継続されることを確認。
- **ログイン後リダイレクト**：ログアウト状態で保護されたページに直接移動。ログイン後にダッシュボードではなくそのページに戻ることを確認。
