- game_saves table + migration 002 (JSON state, anti-cheat metadata) - saveControllers.js : load/save avec validation delta ressources (750k/s × 1.1) - GameSaveManager : upsert MySQL ON DUPLICATE KEY UPDATE - useSaveSync hook : auto-save 30s + keepalive beforeunload + guest fallback - save-validation.test.ts : 8 tests anti-cheat - economy.ts : arbre d'évolution 5 nœuds + prestige ADN (rattrapage step 2) - economy.test.ts : +40 tests (évolution tree, multipliers, start bonus) - GDD + SPRINT1.md : docs sprint complètes - Rethème data : shop.json, Achievements.json, Cookie, Legal (rattrapage step 1)
48 lines
1.8 KiB
JavaScript
Executable File
48 lines
1.8 KiB
JavaScript
Executable File
const express = require("express");
|
|
|
|
const router = express.Router();
|
|
|
|
/* ************************************************************************* */
|
|
// Define Your API Routes Here
|
|
/* ************************************************************************* */
|
|
|
|
// Import Controllers
|
|
const userControllers = require("./controllers/userControllers");
|
|
const authControllers = require("./controllers/authControllers");
|
|
const saveControllers = require("./controllers/saveControllers");
|
|
const verifyToken = require("./middlewares/verifyToken");
|
|
const verifyOAuth = require("./middlewares/verifyOAuth");
|
|
|
|
// Vérifie que le token appartient au même utilisateur que :id
|
|
const verifySelf = (req, res, next) => {
|
|
if (String(req.user) !== String(req.params.id)) {
|
|
return res.status(403).json({ message: "Forbidden." });
|
|
}
|
|
return next();
|
|
};
|
|
|
|
// Auth SuperOAuth
|
|
router.get("/auth/callback", authControllers.callback);
|
|
router.post("/auth/logout", authControllers.logout);
|
|
|
|
// User management (auth locale — conservée pendant migration)
|
|
router.get("/users", verifyToken, userControllers.browse);
|
|
router.get("/users/:id", verifyToken, verifySelf, userControllers.read);
|
|
router.get("/users/:id/field", verifyToken, verifySelf, userControllers.read);
|
|
router.put("/users/:id", verifyToken, verifySelf, userControllers.edit);
|
|
router.post("/users", userControllers.add);
|
|
router.delete("/users/:id", verifyToken, verifySelf, userControllers.destroy);
|
|
router.post("/login", userControllers.login);
|
|
|
|
// Sync game state — SuperOAuth uniquement
|
|
router.patch("/users/:id/coins", verifyOAuth, verifySelf, userControllers.updateCoins);
|
|
|
|
// Game saves — JWT required
|
|
router.get("/save", verifyToken, saveControllers.load);
|
|
router.post("/save", verifyToken, saveControllers.save);
|
|
|
|
|
|
/* ************************************************************************* */
|
|
|
|
module.exports = router;
|