feat: expose admin status to frontend via user API
Add is_admin field to UserResponse schema and update AuthContext to fetch user profile after login, storing and exposing isAdmin boolean. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
---
|
||||
# nuzlocke-tracker-5svj
|
||||
title: Expose admin status to frontend via user API
|
||||
status: todo
|
||||
status: completed
|
||||
type: task
|
||||
priority: normal
|
||||
created_at: 2026-03-21T10:06:20Z
|
||||
updated_at: 2026-03-21T10:06:24Z
|
||||
updated_at: 2026-03-21T10:18:26Z
|
||||
parent: nuzlocke-tracker-ce4o
|
||||
blocked_by:
|
||||
- nuzlocke-tracker-dwah
|
||||
@@ -15,13 +15,21 @@ The frontend needs to know if the current user is an admin so it can show/hide t
|
||||
|
||||
## Checklist
|
||||
|
||||
- [ ] Add `is_admin` field to the user response schema (`/api/users/me` endpoint)
|
||||
- [ ] Update `AuthContext` to fetch `/api/users/me` after login and store `isAdmin` in context
|
||||
- [ ] Expose `isAdmin` boolean from `useAuth()` hook
|
||||
- [ ] Handle edge case: user exists in Supabase but not yet in local DB (first login creates user row with `is_admin=false`)
|
||||
- [x] Add `is_admin` field to the user response schema (`/api/users/me` endpoint)
|
||||
- [x] Update `AuthContext` to fetch `/api/users/me` after login and store `isAdmin` in context
|
||||
- [x] Expose `isAdmin` boolean from `useAuth()` hook
|
||||
- [x] Handle edge case: user exists in Supabase but not yet in local DB (first login creates user row with `is_admin=false`)
|
||||
|
||||
## Files to change
|
||||
|
||||
- `backend/src/app/schemas/user.py` or equivalent — add `is_admin` to response
|
||||
- `backend/src/app/api/users.py` — ensure `/me` returns `is_admin`
|
||||
- `frontend/src/contexts/AuthContext.tsx` — fetch and store admin status
|
||||
|
||||
## Summary of Changes
|
||||
|
||||
Added `isAdmin` field to frontend auth system:
|
||||
|
||||
- **Backend**: Added `is_admin: bool = False` to `UserResponse` schema in `backend/src/app/api/users.py`
|
||||
- **Frontend**: Updated `AuthContext` to fetch `/api/users/me` after login and expose `isAdmin` boolean
|
||||
- Edge case handled: `syncUserProfile` returns `false` if API call fails (new user auto-created with `is_admin=false` by backend)
|
||||
|
||||
Reference in New Issue
Block a user