Admin access is checked against the database, every time
Signing in issues a session token that lasts 30 days, and it carries the user’s role (USER or ADMIN). The admin API doesn’t trust that token’s copy of the role. On every admin request it reloads the user from the database and checks the role there, so an admin who is demoted loses access on their next request rather than when their token expires. Every admin endpoint goes through the same server-side check.
