Gate /admin to staff roles; role-aware login redirects for players #44
Reference in New Issue
Block a user
No description provided.
Delete Branch "feature/player-accounts"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Follow-up hardening to the merged player-accounts work (#43). Introducing the
playerrole turned "logged-in" into "logged-in but possibly untrusted", but the admin router only gated its content routes (dashboard, posts, wiki, uploads) byisLoggedIn— so a player session could reach editor-tier endpoints.Changes
requireRole('admin','editor','moderator')at the/adminrouter base. Players now get 403 on all/admin/*and use the/playergroup instead. Editors/moderators unaffected.RequireAuthredirects a signed-in player to/account(mirrorsRequirePlayer)./account, staff →/admin) so you land in the right shell whichever door you used. Login pages stay separate by design.Verification
/admin/dashboard+/admin/users, 200 on/player/account./adminand at/admin/loginboth land on/account.🤖 Generated with Claude Code
https://claude.ai/code/session_019rao86n5cXpwAyjdBFEshV
Introducing the 'player' role turned 'logged-in' into 'logged-in but possibly untrusted', but the admin router only gated content routes (dashboard, posts, wiki, uploads) by isLoggedIn — so a player session could reach editor-tier endpoints. Fixes: - Backend: requireRole('admin','editor','moderator') at the admin router base; players now 403 on all /admin/* and use /player instead. - Client: RequireAuth redirects a signed-in player to /account (mirrors RequirePlayer). - Both login pages redirect by role after auth (player -> /account, staff -> /admin) so you land in the right shell whichever door you used. Verified live: player token 403s on /admin/dashboard + /admin/users, 200s on /player/account; browser click-through confirms a player at /admin and at /admin/login both land on /account. 134 server tests green; client builds. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019rao86n5cXpwAyjdBFEshV