Tau.Acuvim/portal/frontend
Diseri Pearson e9143f8c27 Portal: self-service My profile + secondaryColor on the sidebar
Closes the last two outstanding items from FrontEndPrompt.txt's
original phase list.

Frontend
- New MyProfilePage at /profile, any authenticated user. Two cards:
  read-only email + roles + editable displayName; current/new/confirm
  password change with client-side AntD policy validation matching
  Identity's backend rules.
- AppLayout: replace the inline displayName + Sign out with a Dropdown
  on a user-icon button. Items are "My profile" → /profile and
  "Sign out". Header is cleaner; logout still one click.
- AppLayout: Sider now uses branding.secondaryColor with Menu
  theme="dark" + transparent background so the brand colour shows
  through. Sidebar finally reflects the secondary brand colour like
  the header reflects primary.
- useAuth exposes setUser so a successful profile save updates the
  header name without a /auth/me round-trip (PUT already returns
  the updated CurrentUserResponse).

Backend
- PUT /api/auth/me — update own displayName. Email and roles stay
  immutable here (admin-only for role changes). Returns the updated
  CurrentUserResponse.
- POST /api/auth/me/change-password — requires both current and new
  password. Wraps UserManager.ChangePasswordAsync so Identity's
  password policy (8+, upper, lower, digit) runs server-side and the
  current password is verified before any change.

Curl-verified
- PUT /me with new displayName → 200 with updated user.
- change-password with wrong current → 400 "Incorrect password."
- change-password with weak new → 400 listing each policy violation.
- change-password valid + revert → 204 / 204.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 20:04:18 +02:00
..
src Portal: self-service My profile + secondaryColor on the sidebar 2026-05-19 20:04:18 +02:00
.gitignore Add portal: customer-facing white-labeled monitoring stack 2026-05-18 09:30:30 +02:00
index.html Add portal: customer-facing white-labeled monitoring stack 2026-05-18 09:30:30 +02:00
package-lock.json Portal: Client Dashboard, Measurements page, Excel exports, Grafana auth, RLS 2026-05-19 09:15:44 +02:00
package.json Portal: Client Dashboard, Measurements page, Excel exports, Grafana auth, RLS 2026-05-19 09:15:44 +02:00
tsconfig.json Add portal: customer-facing white-labeled monitoring stack 2026-05-18 09:30:30 +02:00
tsconfig.node.json Add portal: customer-facing white-labeled monitoring stack 2026-05-18 09:30:30 +02:00
vite.config.ts Add portal: customer-facing white-labeled monitoring stack 2026-05-18 09:30:30 +02:00