# 01_code_definition/01_05_user.md # ユーザー定義 版:v1.0 実装の状況は `work_order_db_migration.md`(作業書)を見る ## 概要 システムにログインするためのユーザー情報を管理する。 従事者マスタ(`employees` テーブル)とは別に、ログイン専用の情報を持つ。 **個人事業(SPS)と法人(SCSPS)のユーザーを一元管理する。** ## ユーザーID 従事者ID(SPS-ID)と同じものを使用する。 → 詳細は `01_03_id_generation.md` 参照 ## データ構造(`users` テーブル) | 列 | 型 | 必須 | 説明 | |-----------|-----|------|------| | user_id | string | ✅ | SPS-ID(例:SPS01-00001)。主キー | | password | string | ✅ | ログインパスワード(**平文**で保存する。`00_03_login_session.md` 10節の決定。変更禁止) | | name | string | ✅ | 表示名(従事者マスタからコピー) | | status | string | ✅ | active / inactive | | emergency_override | boolean | | 稼働状況チェックを免除する緊急用フラグ(`00_03` 4節) | | force_change | boolean | ✅ | 真の間は、パスワード変更以外の操作ができない。初期・仮パスワードの発行時に真 | | password_kind | string | | `initial`(初期)/`temp`(仮)/`user`(本人が設定)(`00_03` 11節) | | password_issued_at | datetime | | 初期・仮パスワードの発行日時 | | password_issued_by | string | | 発行した人のSPS-ID | ## ステータス | 値 | 説明 | |----|------| | active | ログイン可能 | | inactive | ログイン不可(退職者など) | ## パスワードポリシー - **初期パスワード**:新規登録時にシステムが自動生成する。登録を行う人が、「パスワード通知待ち一覧」から書類(PDF)を発行し、紙で本人に渡す - **仮パスワード**:従事者がパスワードを忘れたとき、`password_reissue` を持つ人が発行する - どちらも `force_change` を真にして保存し、初回ログイン時に本人が変更する。変更後に偽(`password_kind` は `user`) - パスワードは**平文**で保存する(意図的設計。変更禁止)。全権保持者が確認できるようにするため - 詳細は `00_03_login_session.md` 11節 ## 従事者マスタとの関係 - ユーザー情報(`users`)と従事者情報(`employees`)は `user_id` = `sps_id` で紐付く - 権限は `employee_permissions` で管理する(`users` には権限情報を含めない) - ログイン時は `users` で認証後、`employees` と `employee_permissions` から稼働状況と権限を取得する ## 保存場所 `users` テーブル(`00_07_database.md` 5.2節) --- ## 改訂履歴 | 日付 | 版 | 担当 | 内容 | |------|----|------|------| | 2026-10-08 | - | 全体管理者(12代目) | ファイル名規則を「フォルダ番号+ファイル番号」形式に変更したことに伴い、参照名と保存先表記を機械的に置換(内容の変更なし)(この文書は版数未管理のため、版数は付けていない) | | 2026-10-28 | - | 全体管理者(14代目) | パスワードの「ハッシュ化」の記述を「平文」に訂正(00_03 §10 の決定に合わせる)。初期パスワード・仮パスワードの区別と、forceChange・password_kind 等の項目を追加。保存場所を現状に修正。権限フィールド名を「権限」に修正。isAdmin を emergency_override に改名(移行期間中は両方) | | 2026-10-29 | 1.0 | 全体管理者(14代目) | DB前提に書き直し。データ構造を `users` テーブルの列に。保存場所を `users` テーブルに。`isAdmin` の併読の記述を削除 |