パスワード変更
概要
ログイン中の自分のパスワードを変更する。現在のパスワードで本人確認してから、新しいパスワードに変更する。
必要なデータ
レスポンス
実装メモ(2026-07-15)
- Rust API (
handlers/users.rs::change_password) で実装。verify_passwordで現在のパスワードを検証し、argon2 で新しいハッシュを保存する。誤った現在パスワードは 400(メッセージ「現在のパスワードが正しくありません」)を返す。 - OpenAPI スキーマ(
apps/web/src/api/schema.d.ts)に反映済み。フロントは設定ページ(/settings)から利用。
既知の制約(未対応)
- パスワード変更時に他のセッションは失効されない。現在のセッション方式は Redis に
user_idのみを保持し、ユーザー単位でのセッション列挙・一括失効ができないため。「乗っ取り対策でパスワードを変える」用途では、既存の他セッションを締め出せない(自分の現在セッションは維持される=これは意図通り)。 - 恒久対応には
usersにtoken_version(またはpassword_changed_at)列を追加し、ログイン時にセッションへ焼き込み、認証抽出時に DB 値と突き合わせて不一致なら 401 にする仕組みが必要。認証経路全体(AuthUser/CurrentUser)に影響するため本 PR の範囲外とし、別 issue で対応予定。
実装要件
- Valkey でセッション → ユーザーID取得
- 現在のパスワード検証(argon2)
- PostgreSQL で
password_hash更新(updated_atも更新) - 必要コンポーネント: PostgreSQL、Valkey