Skip to content

Commit

Permalink
Use postgres to store sessions
Browse files Browse the repository at this point in the history
  • Loading branch information
kurukimi committed Jun 12, 2024
1 parent 123b87e commit 5a93c8e
Show file tree
Hide file tree
Showing 3 changed files with 137 additions and 8 deletions.
125 changes: 119 additions & 6 deletions server/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion server/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,15 +32,16 @@
"cache-manager": "^5.2.3",
"class-transformer": "^0.5.1",
"class-validator": "^0.14.1",
"connect-pg-simple": "^9.0.1",
"cookie-parser": "^1.4.6",
"dayjs": "^1.11.9",
"express-session": "^1.18.0",
"fast-xml-parser": "^4.2.7",
"graphql": "^16.8.0",
"lodash": "^4.17.21",
"pg": "^8.12.0",
"passport": "^0.7.0",
"passport-oauth2": "^1.8.0",
"pg": "^8.12.0",
"reflect-metadata": "^0.1.13",
"rxjs": "^7.8.1",
"sha.js": "^2.4.11",
Expand All @@ -53,6 +54,7 @@
"@nestjs/cli": "^10.0.0",
"@nestjs/schematics": "^10.0.0",
"@nestjs/testing": "^10.0.0",
"@types/connect-pg-simple": "^7.0.3",
"@types/cookie-parser": "^1.4.7",
"@types/express": "^4.17.17",
"@types/express-session": "^1.18.0",
Expand Down
16 changes: 15 additions & 1 deletion server/src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import { ConfigService } from "./config/config.service";
import { AppLogger } from "./logger/app-logger";
import cookieParser from "cookie-parser";
import session from "express-session";
import pgSession from "connect-pg-simple";
import pg from "pg";

const options =
process.env.NODE_ENV === "development"
Expand All @@ -23,16 +25,28 @@ const options =
app.useLogger(new AppLogger(configService));
useContainer(app.select(AppModule), { fallbackOnErrors: true });
app.useGlobalPipes(new ValidationPipe());
const { username, password, host, port, name } = configService.config.database;
const pgPool = new pg.Pool({
database: name,
user: username,
password,
host,
port,
});
app.use(
// TODO: change default store to pg store
session({
store: new (pgSession(session))({
pool: pgPool,
createTableIfMissing: true,
}),
name: configService.config.session.name,
secret: configService.config.session.secret,
resave: false,
saveUninitialized: false,
cookie: {
httpOnly: true,
secure: process.env.NODE_ENV !== "development",
maxAge: 90 * 24 * 60 * 60 * 1000,
},
}),
);
Expand Down

0 comments on commit 5a93c8e

Please sign in to comment.