From 9ebb50104cc1f6c8ef1cea446ae595fb2eb532a2 Mon Sep 17 00:00:00 2001 From: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com> Date: Fri, 3 Feb 2023 13:36:59 +0100 Subject: [PATCH] feat(medusa): Expose session options (#3162) --- .changeset/serious-walls-mate.md | 5 +++++ .../medusa/src/loaders/__tests__/module.spec.ts | 6 +++--- packages/medusa/src/loaders/express.ts | 16 ++++++++-------- packages/medusa/src/types/global.ts | 9 +++++++++ 4 files changed, 25 insertions(+), 11 deletions(-) create mode 100644 .changeset/serious-walls-mate.md diff --git a/.changeset/serious-walls-mate.md b/.changeset/serious-walls-mate.md new file mode 100644 index 0000000000..12614081bd --- /dev/null +++ b/.changeset/serious-walls-mate.md @@ -0,0 +1,5 @@ +--- +"@medusajs/medusa": patch +--- + +feat(medusa): Expose session options diff --git a/packages/medusa/src/loaders/__tests__/module.spec.ts b/packages/medusa/src/loaders/__tests__/module.spec.ts index f117da8316..f74b69b5f7 100644 --- a/packages/medusa/src/loaders/__tests__/module.spec.ts +++ b/packages/medusa/src/loaders/__tests__/module.spec.ts @@ -4,16 +4,16 @@ import { AwilixContainer, ClassOrFunctionReturning, createContainer, - Resolver, + Resolver } from "awilix" -import Logger from "../logger" import { ConfigModule, MedusaContainer, ModuleResolution, MODULE_RESOURCE_TYPE, - MODULE_SCOPE, + MODULE_SCOPE } from "../../types/global" +import Logger from "../logger" import registerModules from "../module" import { trackInstallation } from "../__mocks__/medusa-telemetry" diff --git a/packages/medusa/src/loaders/express.ts b/packages/medusa/src/loaders/express.ts index b5bcd75da0..4b5181c67d 100644 --- a/packages/medusa/src/loaders/express.ts +++ b/packages/medusa/src/loaders/express.ts @@ -1,9 +1,9 @@ +import createStore from "connect-redis" +import cookieParser from "cookie-parser" import { Express } from "express" import session from "express-session" -import cookieParser from "cookie-parser" import morgan from "morgan" -import redis, { RedisConfig } from "redis" -import createStore from "connect-redis" +import redis from "redis" import { ConfigModule } from "../types/global" type Options = { @@ -22,17 +22,17 @@ export default async ({ app, configModule }: Options): Promise => { sameSite = "none" } - const { cookie_secret } = configModule.projectConfig + const { cookie_secret, session_options } = configModule.projectConfig const sessionOpts = { - resave: true, - saveUninitialized: true, + resave: session_options?.resave ?? true, + saveUninitialized: session_options?.saveUninitialized ?? true, cookieName: "session", proxy: true, - secret: cookie_secret, + secret: session_options?.secret ?? cookie_secret, cookie: { sameSite, secure, - maxAge: 10 * 60 * 60 * 1000, + maxAge: session_options?.ttl ?? 10 * 60 * 60 * 1000, }, store: null, } diff --git a/packages/medusa/src/types/global.ts b/packages/medusa/src/types/global.ts index 20cfb86c40..eaf923bb90 100644 --- a/packages/medusa/src/types/global.ts +++ b/packages/medusa/src/types/global.ts @@ -100,10 +100,19 @@ export type ModuleExports = { models?: Constructor[] } +type SessionOptions = { + resave?: boolean + saveUninitialized?: boolean + secret?: string + ttl?: number +} + export type ConfigModule = { projectConfig: { redis_url?: string + session_options?: SessionOptions + jwt_secret?: string cookie_secret?: string