React Router
ユーザーストーリー仕様

権限・認可

権限に応じたデータ閲覧と機能アクセスを制御する

Purpose

権限に応じたデータ閲覧と機能アクセスを制御する

US-004: メンバー情報を閲覧したい

ユーザー: 社員 目的: 組織のメンバー情報を閲覧したい 価値: チーム構成や連絡先を把握できる

要件

ID条件振る舞いSkip
all-employees-visibleAlways: 全社員が全社員のデータを閲覧できる--

US-005: メンバー一覧を閲覧したい

ユーザー: 社員 目的: メンバー一覧画面でチームメンバーを確認したい 価値: 組織構成を把握できる

要件

ID条件振る舞いSkip
members-header-linkAlways: ヘッダーに「メンバー」リンクを表示する--
members-page-accessAlways: 全社員が /employees にアクセスできる--
members-readonly-for-employeeIf: 一般社員の場合メンバー一覧を閲覧のみ可能にする(編集不可)-

US-006: 社員の権限を変更したい

ユーザー: 管理者 目的: メンバー管理画面から社員の権限を変更したい 価値: 組織変更に応じて素早く権限を更新できる

要件

ID条件振る舞いSkip
employees-listWhen: /employees にアクセスしたとき全社員を一覧表示する-
employees-list-displayWhen: 一覧を表示するとき各社員の以下を表示する: - アバター (Google アカウントの画像 / イニシャル fallback) - 氏名 (familyName + givenName、なければ name) - メールアドレス - メンター (アバタースタック、最大3名表示 + 超過分はバッジ) - メンティー (アバタースタック、最大3名表示 + 超過分はバッジ) - 現在の権限同値分割 - employees-list で代表検証(表示要素は静的UIのため1ケースで十分)
role-changeWhen: 権限セレクトで別の権限を選択したとき即座に権限を更新する-
role-change-successWhen: 権限変更が成功したとき「権限を変更しました」とトースト表示する-
last-admin-errorIf: 最後の管理者を降格しようとした場合エラーを返し「最後の管理者のため権限を変更できません。先に他の社員を管理者に昇格してください。」と表示する-
user-not-foundIf: 対象ユーザーが存在しない場合404 エラーを返す-

US-007: メンター関係を管理したい

ユーザー: 管理者 目的: メンバー管理画面からメンターとメンティーの紐付けを管理したい 価値: レビュー体制に応じたアクセス制御ができる

要件

ID条件振る舞いSkip
mentor-constraintsAlways: メンター関係は以下の制約に従う: - 1人の社員は複数のメンターを持てる (多対多) - 1人のメンターは複数のメンティーを持てる (多対多) - 自分自身をメンター/メンティーに設定できない - 循環OK (AがBのメンター、BがAのメンター)-多対多は信頼境界(DB スキーマ)で保証、自己参照禁止は self-mentee-error で検証、循環は制約なし
mentor-dialog-openWhen: メンターセルをクリックしたときメンター管理ダイアログを表示する-
mentor-dialog-displayWhen: メンター管理ダイアログを表示するとき以下を表示する: - メンター追加セレクト (全社員から選択可能) - 現在のメンター一覧 (削除ボタン付き)同値分割 - mentor-add/mentor-remove で代表検証(ダイアログ表示は操作の前提条件)
mentor-addWhen: メンターを選択したときメンター関係を追加し「メンターを追加しました」と表示する-
mentor-removeWhen: メンター削除ボタンをクリックしたときメンター関係を削除し「メンターを解除しました」と表示する-
mentor-duplicateIf: 既に登録済みのメンターを追加しようとした場合409 エラーを返すUIで既存メンターは選択肢から除外されるため UI からは発生しない(API境界テストとして保持)
mentee-dialog-openWhen: メンティーセルをクリックしたときメンティー管理ダイアログを表示する-
mentee-dialog-displayWhen: メンティー管理ダイアログを表示するとき以下を表示する: - メンティー追加セレクト (全社員から選択可能) - 現在のメンティー一覧 (削除ボタン付き)同値分割 - mentee-add/mentee-remove で代表検証(ダイアログ表示は操作の前提条件)
mentee-addWhen: メンティーを選択したときメンター関係を追加し「メンティーを追加しました」と表示する-
mentee-removeWhen: メンティー削除ボタンをクリックしたときメンター関係を削除し「メンティーを解除しました」と表示する-
mentee-duplicateIf: 既に登録済みのメンティーを追加しようとした場合409 エラーを返すUIで既存メンティーは選択肢から除外されるため UI からは発生しない(API境界テストとして保持)
self-mentee-errorIf: 自分自身をメンティーに設定しようとした場合400 エラーを返す同値分割 - フロントエンドで自分自身を選択肢から除外しているため UI からは発生しない
cascade-deleteWhen: ユーザーが削除されたとき関連するメンター関係も自動削除する信頼境界(DB の ON DELETE CASCADE)で保証

On this page