Skip to content

Commit 93c32b3

Browse files
authored
Merge pull request #26 from singyichen/design/004-forgot-reset-password
design: wireframes and prototypes for forgot/reset password pages (spec #4)
2 parents 6804ed3 + bb8b9c0 commit 93c32b3

10 files changed

Lines changed: 5729 additions & 4 deletions

File tree

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ assets/logo/*.png
4444
# Playwright MCP working directory (browser snapshots, console logs, temp files)
4545
.playwright-mcp/
4646

47+
# Playwright test artifacts
48+
test-results/
49+
4750
# Qodo code review bot working directory
4851
.qodo/
4952

CLAUDE.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,9 +113,9 @@ label-suite/
113113

114114
Zustand must **not** hold API response data.
115115

116-
**Role model:** The system uses a two-layer role model. **System role** (JWT single string): `user` (any registered platform member) | `super_admin`. `null` means unauthenticated only — there is no pending/approval state. Any registered user immediately holds `user` system role and can create projects. **Task role** (resolved from `task_membership` table per task): `project_leader` | `reviewer` | `annotator`. Task roles are not stored in the JWT — they are fetched per task via API.
116+
**Role model:** The system uses a two-layer role model. **System role** (JWT single string): `user` | `super_admin` (`null` = unauthenticated only). All registered users immediately get `user`no pending state, no approval flow. Any `user` can create labeling projects. **Task role** (resolved from `task_membership` table per task): `project_leader` | `reviewer` | `annotator`. Task roles are not stored in the JWT — they are fetched per task via API.
117117

118-
**Dashboard role dispatch:** `authStore` holds `role: SystemRole | null` (`null` when unauthenticated — redirects to `/login`). `DashboardPage` dispatches with explicit `role ===` checks: `super_admin``SuperAdminDashboard`; `user``UserDashboard` (content sections rendered dynamically based on the user's task memberships; empty state shown when user has no task memberships yet).
118+
**Dashboard role dispatch:** `authStore` holds `role: SystemRole | null` (`null` when unauthenticated). `DashboardPage` dispatches with explicit `role ===` checks: `super_admin``SuperAdminDashboard`; `user``UserDashboard` (content sections rendered dynamically based on the user's task memberships; empty state shown when user has no task memberships yet). `null` redirects to `/login`. Unknown/unrecognised `role` clears the JWT session and redirects to `/login`.
119119

120120
**RoleGuard:** System-level pages use `role` from JWT — no inheritance. Task-level pages additionally check task membership via `useTaskRole(taskId)` hook. See [ADR-011](docs/adr/011-frontend-source-structure.md).
121121

0 commit comments

Comments
 (0)