diff --git a/package-lock.json b/package-lock.json index 783638f..33209c7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "fullsend", - "version": "1.8.0", + "version": "1.8.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "fullsend", - "version": "1.8.0", + "version": "1.8.1", "license": "MIT", "dependencies": { "bcryptjs": "^2.4.3", diff --git a/package.json b/package.json index 06ee37c..41a19b8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fullsend", - "version": "1.8.0", + "version": "1.8.1", "description": "Fullsend allows allowed users to send bulk text messages to groups of recipients", "main": "server.js", "scripts": { diff --git a/public/help.html b/public/help.html index cdcc5a3..c960db7 100644 --- a/public/help.html +++ b/public/help.html @@ -63,6 +63,10 @@
+ Fixes how sessions are handled on the user's side. +
Adds (finally!) authentication via OpenID Connect (OIDC) and Keycloak. Users must have the fullsend_access role in Keycloak to use the application and fullsend_admin to administer it.
diff --git a/server.js b/server.js
index 68622e0..769c277 100644
--- a/server.js
+++ b/server.js
@@ -31,11 +31,20 @@ const pool = mariadb.createPool({
const PORT = process.env.PORT || 8080;
// Session middleware (required for server-side login flow)
+// Configure cookie maxAge from env (seconds) and enable rolling so the cookie
+// expiration is refreshed on each response. Defaults to 7 days.
+const sessionMaxAgeSeconds = parseInt(process.env.SESSION_MAX_AGE || '604800', 10); // 7 days
app.use(session({
secret: process.env.SESSION_SECRET || 'a very long secret',
resave: false,
saveUninitialized: false,
- cookie: { secure: false }, // set secure: true if using HTTPS
+ rolling: true, // refresh cookie expiration on every response
+ cookie: {
+ secure: (process.env.NODE_ENV === 'production'), // set to true in prod when using HTTPS
+ httpOnly: true,
+ sameSite: 'lax',
+ maxAge: sessionMaxAgeSeconds * 1000,
+ },
}));
// Initialize OIDC discovery (will be awaited before server starts)