diff --git a/services/arbiter-3.0/src/index.js b/services/arbiter-3.0/src/index.js index 4e020eb..3b0d25c 100644 --- a/services/arbiter-3.0/src/index.js +++ b/services/arbiter-3.0/src/index.js @@ -2,11 +2,13 @@ require('dotenv').config(); const express = require('express'); const expressLayouts = require('express-ejs-layouts'); const session = require('express-session'); +const PgSession = require('connect-pg-simple')(session); const passport = require('passport'); const DiscordStrategy = require('passport-discord').Strategy; const { Client, GatewayIntentBits, REST, Routes } = require('discord.js'); const csrf = require('csurf'); const cors = require('cors'); +const { Pool } = require('pg'); const authRoutes = require('./routes/auth'); const adminRoutes = require('./routes/admin/index'); @@ -16,6 +18,15 @@ const { registerEvents } = require('./discord/events'); const { linkCommand } = require('./discord/commands'); 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 const client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMembers] }); registerEvents(client); @@ -64,6 +75,11 @@ app.use(express.urlencoded({ extended: true })); app.locals.client = client; app.use(session({ + store: new PgSession({ + pool: pgPool, + tableName: 'session', + createTableIfMissing: true + }), secret: process.env.SESSION_SECRET, resave: false, saveUninitialized: false,