- Add optionalAuth middleware: attaches session when present, never blocks (guests pass through) - Make game endpoints (start/answer) accept optional auth - GameSessionStore.userId: string → string | null - Rate limiter falls back to IP for unauthenticated users - Frontend: remove /play route guard, show 'Create account' CTA on score screen for guests - Add tests for guest session creation, answer submission, and cross-user session isolation
19 lines
724 B
TypeScript
19 lines
724 B
TypeScript
import express from "express";
|
|
import type { Router } from "express";
|
|
import { createGameController } from "../controllers/gameController.js";
|
|
import { optionalAuth } from "../middleware/authMiddleware.js";
|
|
import { gameLimiter } from "../middleware/rateLimiters.js";
|
|
import type { GameSessionStore } from "../gameSessionStore/index.js";
|
|
|
|
export const createGameRouter = (store: GameSessionStore): Router => {
|
|
const router = express.Router();
|
|
const controller = createGameController(store);
|
|
|
|
router.use(optionalAuth);
|
|
router.use(gameLimiter);
|
|
|
|
router.post("/start", controller.createGame as express.RequestHandler);
|
|
router.post("/answer", controller.submitAnswer as express.RequestHandler);
|
|
|
|
return router;
|
|
};
|