WIREFRAME — F-AUTH-001〜004 ログインページ

📝 実装注記

1. 画面構成

フォーム型テンプレートに準拠。中央寄せの単カラムレイアウト(最大幅480px)。サイドバーなし(ログイン前のためナビゲーション不要)。サービスロゴ→ログインカード(タブ切替: ログイン / パスワードリセット)→フッターリンクの構成。パスワードリセットはステップインジケーター付きの3段階フロー(メール入力→送信完了→新パスワード設定)。ステップ3はリセットリンクからのアクセス時に表示される別URL状態だが、ワイヤーフレーム上は1ファイルに全状態を含める。

2. 権限制御

本画面は未認証状態のユーザーに表示。認証済みユーザーがアクセスした場合はF-AUTH-004(アカウント種別判定)により自動リダイレクト: 法人管理者→法人管理トップ(F-CORP-001)、事業所管理者→事業所管理トップ(F-SITE-001)、事業所アカウント→事業所トップ(F-TOP-001)、個人アカウント→個人トップ(F-TOP-001)。お試しアカウントは通常アカウントと同じログインフローだが、ログイン後にお試し期限バナーを表示。ログインIDは会員IDと個人IDの2系統を1つのフィールドで受付し、サーバーサイドでアカウント種別を判定する。

3. データ表示

お知らせバナーは、お知らせ管理(B-CNT-005)で非ログイン公開フラグ(投稿メタlms_notice_is_public)がONのお知らせの最新最大3件をGET /wp-json/lms/v1/notices/recent(非ログインスコープ)で取得して表示。0件の場合は非表示。アカウント種別説明は静的コンテンツ。エラーメッセージ・成功メッセージはサーバーレスポンスに応じて動的に表示/非表示を切替。ダミーデータはメンテナンス告知(2026年7月基準)を例示。

4. インタラクション

ログインボタン押下→サーバーにPOST→認証成功時はF-AUTH-004でアカウント種別を判定し対応するトップ画面にリダイレクト。認証失敗時はエラーメッセージを表示。パスワードリセットのメール送信はWordPressのget_password_reset_key()で生成したリンクをSendGrid経由で送信(C-MAIL-001)。「パスワードをお忘れですか?」クリック→パスワードリセットタブに切替。パスワード表示/非表示トグル(👁アイコン)でtype="password"type="text"を切替。未ログイン状態からお問い合わせ(F-CMN-002)へ遷移可能。FAQ(F-CMN-001)はログイン必須のため本画面にはリンクを置かない。

5. レスポンシブ

PC表示(1200px)を基準設計。ログインカードは最大480pxの中央配置のため、タブレット・スマホでもほぼ同一のレイアウトを維持。スマホ(480px以下)ではログインカード幅を100%に拡張し左右パディングを16pxに縮小。アカウント種別説明は横幅が狭い場合もそのまま縦積みで表示。サービスロゴのサイズを縮小。

6. パフォーマンス・セキュリティ

認証はWordPressのwp_authenticate()を使用。パスワードはwp_hash_password()でハッシュ化保存(bcrypt)。ログイン失敗はサーバー側で失敗試行ログ(lms_auth_failure_logs:入力ログインID・IPアドレス・失敗日時)に記録する(閲覧UIなし・90日保持)。パスワード複雑性・強度表示・試行回数制限(アカウントロック)・reCAPTCHA・二要素認証などの認証強化策は現時点の実装対象外(WordPress標準の挙動のみ)。パスワードリセットリンクの有効期限は24時間(暫定。WordPress標準のget_password_reset_key())。リセットリンクは1回のみ使用可能(使用後は即時無効化)。CSRF対策: ログインフォームにWordPressのnonce(wp_nonce_field())を埋め込み。HTTPSを強制し、CookieにSecure/HttpOnly/SameSite=Lax属性を設定。「ログイン状態を保持」チェック時はセッション有効期間を14日に延長(デフォルト2日)。お試しアカウントの有効期限チェックはログイン処理内で実施し、期限切れの場合は専用のエラーメッセージ「お試し期間が終了しました。本契約についてはお問い合わせください。」を表示。

💡 本ワイヤーフレームはPC表示(1200px幅)を基準としています。タブレット・スマホ表示は別途レスポンシブ設計が必要です。