feat: PostgreSQL session store
Replaces MemoryStore with connect-pg-simple. Sessions now persist across Arbiter restarts. Table 'session' auto-created if missing. Signed-off-by: Claude (Chronicler #61) <claude@firefrostgaming.com>
This commit is contained in:
@@ -2,11 +2,13 @@ require('dotenv').config();
|
|||||||
const express = require('express');
|
const express = require('express');
|
||||||
const expressLayouts = require('express-ejs-layouts');
|
const expressLayouts = require('express-ejs-layouts');
|
||||||
const session = require('express-session');
|
const session = require('express-session');
|
||||||
|
const PgSession = require('connect-pg-simple')(session);
|
||||||
const passport = require('passport');
|
const passport = require('passport');
|
||||||
const DiscordStrategy = require('passport-discord').Strategy;
|
const DiscordStrategy = require('passport-discord').Strategy;
|
||||||
const { Client, GatewayIntentBits, REST, Routes } = require('discord.js');
|
const { Client, GatewayIntentBits, REST, Routes } = require('discord.js');
|
||||||
const csrf = require('csurf');
|
const csrf = require('csurf');
|
||||||
const cors = require('cors');
|
const cors = require('cors');
|
||||||
|
const { Pool } = require('pg');
|
||||||
|
|
||||||
const authRoutes = require('./routes/auth');
|
const authRoutes = require('./routes/auth');
|
||||||
const adminRoutes = require('./routes/admin/index');
|
const adminRoutes = require('./routes/admin/index');
|
||||||
@@ -16,6 +18,15 @@ const { registerEvents } = require('./discord/events');
|
|||||||
const { linkCommand } = require('./discord/commands');
|
const { linkCommand } = require('./discord/commands');
|
||||||
const { initCron } = require('./sync/cron');
|
const { initCron } = require('./sync/cron');
|
||||||
|
|
||||||
|
// PostgreSQL connection pool for sessions
|
||||||
|
const pgPool = new Pool({
|
||||||
|
user: process.env.DB_USER,
|
||||||
|
host: process.env.DB_HOST,
|
||||||
|
database: process.env.DB_NAME,
|
||||||
|
password: process.env.DB_PASSWORD,
|
||||||
|
port: process.env.DB_PORT || 5432
|
||||||
|
});
|
||||||
|
|
||||||
// Initialize Discord Client
|
// Initialize Discord Client
|
||||||
const client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMembers] });
|
const client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMembers] });
|
||||||
registerEvents(client);
|
registerEvents(client);
|
||||||
@@ -64,6 +75,11 @@ app.use(express.urlencoded({ extended: true }));
|
|||||||
app.locals.client = client;
|
app.locals.client = client;
|
||||||
|
|
||||||
app.use(session({
|
app.use(session({
|
||||||
|
store: new PgSession({
|
||||||
|
pool: pgPool,
|
||||||
|
tableName: 'session',
|
||||||
|
createTableIfMissing: true
|
||||||
|
}),
|
||||||
secret: process.env.SESSION_SECRET,
|
secret: process.env.SESSION_SECRET,
|
||||||
resave: false,
|
resave: false,
|
||||||
saveUninitialized: false,
|
saveUninitialized: false,
|
||||||
|
|||||||
Reference in New Issue
Block a user