1.3 KiB
1.3 KiB
title, status, type, priority, created_at, updated_at, parent, blocked_by
| title | status | type | priority | created_at | updated_at | parent | blocked_by | |
|---|---|---|---|---|---|---|---|---|
| Add require_admin dependency and protect admin endpoints | todo | task | normal | 2026-03-21T10:06:19Z | 2026-03-21T10:06:24Z | nuzlocke-tracker-ce4o |
|
Add a require_admin FastAPI dependency that checks the is_admin column on the users table. Apply it to all admin-facing API endpoints (games CRUD, pokemon CRUD, evolutions CRUD, bosses CRUD, route CRUD).
Checklist
- Add
require_admindependency inbackend/src/app/core/auth.pythat:- Requires authentication (reuses
require_auth) - Looks up the user in the
userstable byAuthUser.id - Returns 403 if
is_adminis notTrue
- Requires authentication (reuses
- Apply
require_adminto write endpoints in:games.py,pokemon.py,evolutions.py,bosses.py(all POST/PUT/PATCH/DELETE) - Keep read endpoints (GET) accessible to all authenticated users
- Add tests for 403 response when non-admin user hits admin endpoints
Files to change
backend/src/app/core/auth.py— addrequire_adminbackend/src/app/api/games.py— replacerequire_authwithrequire_adminon mutationsbackend/src/app/api/pokemon.py— samebackend/src/app/api/evolutions.py— samebackend/src/app/api/bosses.py— same