トップ / システム / ログイン/パスワード再発行
ログイン/パスワード再発行
このページでできること
- クヌギスキーマのログイン・初期セットアップ・パスワード再発行の流れを把握できます。
- パスワード再発行ワンタイムリンクの仕組みと有効期限を確認できます。
- 「メールが届かない」「ログインできない」場合の代替手段がわかります。
対応する画面: auth/login.php(ログイン/初期セットアップ)、 auth/forgot_password.php(再発行リクエスト)、 auth/reset_password.php(再設定)、 auth/logout.php(ログアウト)。
ログイン(通常時)
- 配置先 URL(Basic 認証通過後)に
auth/login.phpが表示されます。 - 登録済みのメールアドレスとパスワードを入力 → 「ログイン」。
- 認証成功時はセッションを作り直して
pages/dashboard.phpへ遷移。プロダクト管理者の場合は許可された最初のページ(通常はurls.php)に遷移します。 - 認証失敗時は「メールアドレスまたはパスワードが正しくありません。」というメッセージで再入力を促します。
初期セットアップ(ユーザー数 0 件の場合)
新規にクヌギスキーマを設置した直後、まだユーザーが 1 件もない状態でログイン画面を開くと、自動的に「初期セットアップ」モードに切り替わります(画面タイトルが「ログイン」から「初期セットアップ」に変わります)。
- 任意のメールアドレスとパスワード(8 文字以上)を入力 → 「管理者を作成してログイン」。
- 作成されたアカウントは強制的に「システム管理者(admin)」になります。
- そのままセッションがログイン状態になり、ダッシュボードに遷移します。
受信できるメールアドレスを設定してください
初期セットアップで指定したメールアドレスは、後でパスワード再発行に使われます。社内の共有メールではなく、少なくとも 1 人が必ず読める個別アドレスを推奨します。
セッションとログアウト
- セッション名は
SCHEMACHECKER_SIDです。Cookie 属性はHttpOnly+SameSite=Laxで、HTTPS 経由ならさらにSecureも付きます(X-Forwarded-Proto: httpsも判定対象)。 - 「ログアウト」リンクは画面右上に常に表示されます。クリックで
auth/logout.phpに遷移し、セッション破棄 → ログイン画面へ戻ります。 - 長時間操作が無くてもサーバ側のセッション期限が来るまではログイン状態が維持されます。共有 PC で使う場合は明示的にログアウトしてください。
パスワード再発行(メール経由)
パスワードを忘れた場合、ログイン画面の「パスワードをお忘れの方はこちら」から再発行フローを開始できます。
auth/forgot_password.phpでメールアドレスを入力 → 「再発行リンクを送る」。- 登録済みアドレスの場合のみ、ワンタイムリンク(例:
auth/reset_password.php?token=<ランダム文字列>)が記載されたメールが送信されます。未登録アドレスでも画面の挙動は同じ(メールアドレス存在の有無が外から判別できないようにするため)。 - 受信したメールのリンクを有効期限内に開く → 新しいパスワードを 2 回入力 → 「パスワードを再設定」。
- 更新後は自動的にログイン画面に戻ります。新パスワードで再ログインしてください。
トークンの仕組み
- 生成時に十分長いランダム文字列を作り、SHA-256 ハッシュだけを
password_reset_tokensに保存します。生のトークンは DB に残らない設計です。 - 1 トークンにつき 1 回だけ使用可。使うと
used_atに日時が記録されます。 - 有効期限を過ぎたトークンは(リンクをクリックしても)無効と判定されます。詳細は
src/PasswordReset.phpを参照。 - 1 ユーザーにつき複数のトークンが同時に有効化される設計です。最新のリンクを使ってください。
メールが届かない場合の対処
- 受信箱の迷惑メールフォルダを確認。送信元ドメインの SPF / DKIM が未設定だと Gmail などで迷惑判定されやすいです。
- サーバ側で
mail()が利用可能になっているか確認。Xserver 等の共用レンタルサーバでは標準で利用可能ですが、独自 VPS / クラウドではpostfixやsendmailの設定が必要です。 - それでも届かない場合、システム管理者が アカウント管理 画面から直接パスワードを書き換えてしまうのが確実です(救済オペレーション)。
セキュリティ上の注意
ログイン画面・パスワード再発行画面は不特定多数からのアクセスを許してはいけません。必ず Basic 認証 を併用し、Web サーバ手前で認可していないアクセスを遮断してください。