Add SQLite session store and configure session middleware

This commit is contained in:
2025-01-29 22:13:07 +01:00
parent a9dfb8d54d
commit e74871bf94
4 changed files with 1468 additions and 2 deletions

View File

@@ -13,6 +13,8 @@ services:
- DEBUG=app
- AUTH_USERNAME=fredrik
- AUTH_PASSWORD=apa
- SESSION_SECRET=superheimlich # Add your session secret key
- NODE_ENV=production # Ensure the environment is set to production
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3044"]
interval: 5m

1453
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -12,6 +12,7 @@
"dependencies": {
"basic-auth": "^2.0.1",
"body-parser": "^1.20.3",
"connect-sqlite3": "^0.9.15",
"cookie-parser": "^1.4.7",
"debug": "^4.4.0",
"dotenv": "^16.4.7",

View File

@@ -3,6 +3,7 @@ const express = require('express');
const bodyParser = require('body-parser');
const session = require('express-session');
const cookieParser = require('cookie-parser');
const SQLiteStore = require('connect-sqlite3')(session);
const debug = require('debug')('app');
const tasksRouter = require('./routes/tasks');
const authRouter = require('./routes/auth');
@@ -15,12 +16,21 @@ app.use(bodyParser.json());
app.use(cookieParser());
app.use(express.static('public'));
// Configure session middleware
// Configure session middleware with SQLite store
app.use(session({
secret: process.env.SESSION_SECRET || 'default_secret', // Use a strong secret in production
resave: false,
saveUninitialized: false,
cookie: { secure: false, maxAge: 30 * 24 * 60 * 60 * 1000 } // 1 month
store: new SQLiteStore({
db: 'sessions.sqlite',
dir: '/data',
ttl: 30 * 24 * 60 * 60 // 1 month
}),
cookie: {
//secure: process.env.NODE_ENV === 'production', // Ensure cookies are only sent over HTTPS in production
secure: false,
maxAge: 30 * 24 * 60 * 60 * 1000 // 1 month
}
}));
app.use('/', authRouter);