const express = require("express"); const dotenv = require("dotenv"); const bodyParser = require("body-parser"); const jwt = require("jsonwebtoken"); // Initialize app const app = express(); // Load environment variables from .env file dotenv.config(); // Middleware for parsing JSON app.use(bodyParser.json()); // Middleware to check JWT token for protected routes const authenticateToken = (req, res, next) => { const token = req.header("Authorization")?.split(" ")[1]; // Get token from header if (!token) { return res.status(403).send("A token is required for authentication"); } try { const jwtSecretKey = process.env.JWT_SECRET_KEY || "defaultSecretKey"; const verified = jwt.verify(token, jwtSecretKey); req.user = verified; // Store user data in req object } catch (err) { return res.status(401).send("Invalid token"); } next(); }; // Import routes const popcenRoutes = require("./api/routes/popcen"); const popcenCountRoutes = require("./api/routes/popcenCount"); const userRoutes = require("./api/routes/user"); const registerRoutes = require("./api/routes/register"); // Register route // Use routes app.use("/user", userRoutes); app.use("/user/register", registerRoutes); app.use("/popcen", authenticateToken, popcenRoutes); // Protect popcen routes with JWT app.use("/popcenCount", authenticateToken, popcenCountRoutes); // Protect popcenCount routes // Start server const PORT = process.env.PORT || 3000; app.listen(PORT, () => { console.log(`Server is running on port ${PORT}`); });