Problem
The territory and activity write endpoints have no auth middleware and read user_id from the request body, so any caller can claim/conquer/record as any user (impersonation).
Evidence
routes/api.ts—/activities(POST),/territories/{claim,process-conquest}are outside anyroute.group({ middleware: 'auth' }).app/Actions/Territory/ClaimTerritoryAction.ts/ProcessActivityConquestAction.ts/app/Actions/Activity/ActivityStoreAction.ts—const userId = request.get('user_id').
Acceptance
- Wrap territory + activity write routes in the
authmiddleware group. - Derive
user_idfromAuth.user(), ignore any body-supplied user_id. - Recorder/game-api send the bearer token; demo seeds a logged-in session for user 1.
- Unauthenticated writes return 401.