diff --git a/index.js b/index.js index 27a50d7..6130d2b 100644 --- a/index.js +++ b/index.js @@ -2,6 +2,7 @@ require('dotenv').config({ quiet: true }); const express = require('express'); const sqlite3 = require('sqlite3').verbose(); const app = express(); +const session = require('express-session'); const port = process.env.PORT || 3000; const db = new sqlite3.Database('./database.db', (err) => { @@ -19,11 +20,15 @@ const db = new sqlite3.Database('./database.db', (err) => { }; }); -global.db = db; - app.use(express.static('public')); app.use(express.json()); app.use(express.urlencoded({ extended: true })); +app.use(session({ + secret: process.env.SESSION_SECRET || 'your-secret-key', // Change this to a secure random string + resave: false, + saveUninitialized: true, + cookie: { secure: false } // Set to true if using HTTPS +})); app.use((req, res, next) => { console.log(`${req.method} ${req.originalUrl}`); @@ -50,7 +55,7 @@ function loadRoutes(dir, basePath = '/') { const routeUrl = path.join(basePath, routeName === 'index' ? '' : routeName).replace(/\\/g, '/'); try { - const route = require(fullPath); + const route = require(fullPath)(db); // If the module exports a router/function, use it if (typeof route === 'function' || route.name === 'router') { app.use(routeUrl, route); diff --git a/package-lock.json b/package-lock.json index 332005f..c8e2cfd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,7 @@ "colors": "^1.4.0", "dotenv": "^17.3.1", "express": "^5.2.1", + "express-session": "^1.19.0", "sqlite3": "^5.1.7" } }, @@ -676,6 +677,50 @@ "url": "https://opencollective.com/express" } }, + "node_modules/express-session": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.19.0.tgz", + "integrity": "sha512-0csaMkGq+vaiZTmSMMGkfdCOabYv192VbytFypcvI0MANrp+4i/7yEkJ0sbAEhycQjntaKGzYfjfXQyVb7BHMA==", + "license": "MIT", + "dependencies": { + "cookie": "~0.7.2", + "cookie-signature": "~1.0.7", + "debug": "~2.6.9", + "depd": "~2.0.0", + "on-headers": "~1.1.0", + "parseurl": "~1.3.3", + "safe-buffer": "~5.2.1", + "uid-safe": "~2.1.5" + }, + "engines": { + "node": ">= 0.8.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express-session/node_modules/cookie-signature": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", + "license": "MIT" + }, + "node_modules/express-session/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express-session/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, "node_modules/file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", @@ -1467,6 +1512,15 @@ "node": ">= 0.8" } }, + "node_modules/on-headers": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -1606,6 +1660,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -2151,6 +2214,18 @@ "node": ">= 0.6" } }, + "node_modules/uid-safe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", + "license": "MIT", + "dependencies": { + "random-bytes": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", diff --git a/package.json b/package.json index 58945f1..bab30d4 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "colors": "^1.4.0", "dotenv": "^17.3.1", "express": "^5.2.1", + "express-session": "^1.19.0", "sqlite3": "^5.1.7" }, "name": "notxcs", diff --git a/routes/api/v1/ingame.js b/routes/api/v1/ingame.js index 5e5d7b9..1d69c63 100644 --- a/routes/api/v1/ingame.js +++ b/routes/api/v1/ingame.js @@ -1,8 +1,11 @@ -const db = global.db +let db; const express = require('express'); const router = express.Router(); -module.exports = router; +module.exports = (dbInit) => { + db = dbInit; + return router; +}; router.get('/', (req, res) => {