53 lines
1.1 KiB
Markdown
53 lines
1.1 KiB
Markdown
# T006 — Mock auth session + login + guard
|
||
|
||
> Status: `done`
|
||
> Completed: 2026-07-09
|
||
> Milestone: `M2`
|
||
> Est. change: `~160 lines`
|
||
|
||
## Goal
|
||
|
||
mock 登入後可進 `/app/**`;未登入強制 `/login`;logout 清 session。
|
||
|
||
## Depends on
|
||
|
||
- T005
|
||
|
||
## Inputs
|
||
|
||
- Spec §4.1、§5.0 Auth
|
||
- mock 帳密可寫死 e.g. `demo@harbor.local` / `demo`(文件註明)
|
||
|
||
## Outputs
|
||
|
||
### 程式變更
|
||
|
||
| 路徑 | 動作 | 說明 |
|
||
|------|------|------|
|
||
| `apps/web/src/auth/AuthContext.tsx` | add | session state |
|
||
| `apps/web/src/auth/RequireAuth.tsx` | add | 路由守衛 |
|
||
| `apps/web/src/pages/LoginPage.tsx` | edit | 表單 + 錯誤 |
|
||
| `apps/web/src/lib/storage.ts` | add | localStorage helpers(可先做) |
|
||
| Topbar | edit | 登出按鈕 |
|
||
|
||
### 行為變更
|
||
|
||
- 重整後 mock session 仍在
|
||
- 錯密碼顯示錯誤、不進 app
|
||
|
||
## Out of scope
|
||
|
||
- JWT / live API
|
||
- email 驗證
|
||
|
||
## Acceptance
|
||
|
||
- [ ] 未登入開 `/app/today` → `/login`
|
||
- [ ] 正確登入 → Today
|
||
- [ ] 登出 → login 且不可回 app
|
||
- [ ] `npm run build` 通過
|
||
|
||
```bash
|
||
cd apps/web && npm run build
|
||
```
|