--- # nuzlocke-tracker-5svj title: Expose admin status to frontend via user API status: completed type: task priority: normal created_at: 2026-03-21T10:06:20Z updated_at: 2026-03-21T10:18:26Z parent: nuzlocke-tracker-ce4o blocked_by: - nuzlocke-tracker-dwah --- The frontend needs to know if the current user is an admin so it can show/hide the Admin nav link and protect admin routes client-side. ## Checklist - [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)