Spec
ADDED Requirements¶
Requirement: 開発用ダミートークンの認識¶
開発環境(import.meta.env.DEV === true)において、URLクエリパラメーター?token=devで管理者モードに入ることができなければならない(MUST)。
Scenario: 開発環境でダミートークンを使用¶
- WHEN 開発環境(
pnpm run dev)でhttp://localhost:5173/?token=devにアクセスする - THEN
useAuthがisAdmin: trueを返す - THEN 管理者専用機能(AdminPage)にアクセスできる
Scenario: 本番環境でダミートークンが無効¶
- WHEN 本番ビルド環境で
?token=devのURLにアクセスする - THEN
useAuthがisAdmin: falseを返す - THEN 管理者専用機能にアクセスできない
Scenario: ダミートークン使用後のURL¶
- WHEN 開発環境にて
?token=devでアクセスする - THEN
useAuthがトークンをメモリに保持する - THEN
history.replaceStateによりURLから?token=devが削除される - THEN URLが
http://localhost:5173/(クエリパラメーターなし)になる
Requirement: 実際のSASトークンとの共存¶
開発環境において、実際のAzure Blob Storage SASトークンを使用した認証も引き続きサポートしなければならない(MUST)。
Scenario: 実際のSASトークンを使用¶
- WHEN 開発環境にて
?token=<valid-sas-token>でアクセスする(dev以外のトークン) - THEN
useAuthが実際のSASトークンとして処理する - THEN
isAdmin: trueを返す - THEN BlobWriterが実際のAzure Blob Storageに書き込む
Requirement: 環境検出の精度¶
開発環境の検出は、Viteのimport.meta.env.DEVを使用しなければならない(MUST)。
Scenario: Vite開発サーバーでの検出¶
- WHEN
pnpm run devで起動した環境にてコードを実行する - THEN
import.meta.env.DEVがtrueを返す - THEN ダミートークン
devが有効になる
Scenario: 本番ビルドでの検出¶
- WHEN
pnpm run buildでビルドされたコードを実行する - THEN
import.meta.env.DEVがfalseを返す(またはundefined) - THEN ダミートークン
devが無効になる
Scenario: Tree-shakingによるコード除去¶
- WHEN 本番ビルド(
pnpm run build)を実行する - THEN
import.meta.env.DEVが静的に評価される - THEN 開発用コードがビルド結果から除去される(Tree-shaking)
Requirement: セキュリティの保証¶
本番環境で?token=devが管理者権限を付与してはならない(MUST NOT)。
Scenario: 本番環境での不正アクセス試行¶
- WHEN 本番環境(Azure Blob Storage静的サイト)にて
?token=devでアクセスする - THEN
useAuthがisAdmin: falseを返す - THEN 管理者機能へのアクセスが拒否される
- THEN コンソールにエラーや警告が表示されない(攻撃者に情報を与えない)
Requirement: 開発者体験の向上¶
ダミートークンの使用方法は、シンプルで直感的でなければならない(MUST)。
Scenario: 開発者がすぐに使用できる¶
- WHEN 開発者がREADMEやドキュメントを読む
- THEN
?token=devの使用方法が明確に記載されている - THEN 追加の設定や環境変数の準備が不要である
Scenario: エラー時のフィードバック¶
- WHEN 開発環境で
?token=devを使用してAdminPageにアクセスする - THEN コンソールに「開発モード: ダミートークンを使用中」といった情報メッセージが表示される(開発者への確認)