From 94072c3d24a4d0d4c97900dc31bfbf1c9d2559b7 Mon Sep 17 00:00:00 2001 From: Saad Jutt Date: Sun, 9 Oct 2022 22:08:01 +0500 Subject: [PATCH] fix: added domain for session cookies --- api/.env.example | 1 + api/src/app-modules/configureExpressSession.ts | 14 +++++++++++--- api/src/app.ts | 12 +----------- api/src/utils/verifyEnvVariables.ts | 2 +- 4 files changed, 14 insertions(+), 15 deletions(-) diff --git a/api/.env.example b/api/.env.example index 548c509..dc88534 100644 --- a/api/.env.example +++ b/api/.env.example @@ -1,5 +1,6 @@ MODE=[desktop|server] default considered as desktop CORS=[disable|enable] default considered as disable for server MODE & enable for desktop MODE +ALLOWED_DOMAIN= WHITELIST= PROTOCOL=[http|https] default considered as http diff --git a/api/src/app-modules/configureExpressSession.ts b/api/src/app-modules/configureExpressSession.ts index 7e8992a..0d2096b 100644 --- a/api/src/app-modules/configureExpressSession.ts +++ b/api/src/app-modules/configureExpressSession.ts @@ -1,10 +1,9 @@ -import { Express } from 'express' +import { Express, CookieOptions } from 'express' import mongoose from 'mongoose' import session from 'express-session' import MongoStore from 'connect-mongo' -import { ModeType } from '../utils' -import { cookieOptions } from '../app' +import { ModeType, ProtocolType } from '../utils' export const configureExpressSession = (app: Express) => { const { MODE } = process.env @@ -19,6 +18,15 @@ export const configureExpressSession = (app: Express) => { }) } + const { PROTOCOL, ALLOWED_DOMAIN } = process.env + const cookieOptions: CookieOptions = { + secure: PROTOCOL === ProtocolType.HTTPS, + httpOnly: true, + sameSite: PROTOCOL === ProtocolType.HTTPS ? 'none' : undefined, + maxAge: 24 * 60 * 60 * 1000, // 24 hours + domain: ALLOWED_DOMAIN?.trim() || undefined + } + app.use( session({ secret: process.secrets.SESSION_SECRET, diff --git a/api/src/app.ts b/api/src/app.ts index 366c5ca..073b311 100644 --- a/api/src/app.ts +++ b/api/src/app.ts @@ -1,5 +1,5 @@ import path from 'path' -import express, { ErrorRequestHandler, CookieOptions } from 'express' +import express, { ErrorRequestHandler } from 'express' import cookieParser from 'cookie-parser' import dotenv from 'dotenv' @@ -8,7 +8,6 @@ import { getWebBuildFolder, instantiateLogger, loadAppStreamConfig, - ProtocolType, ReturnCode, setProcessVariables, setupFolders, @@ -29,15 +28,6 @@ if (verifyEnvVariables()) process.exit(ReturnCode.InvalidEnv) const app = express() -const { PROTOCOL } = process.env - -export const cookieOptions: CookieOptions = { - secure: PROTOCOL === ProtocolType.HTTPS, - httpOnly: true, - sameSite: PROTOCOL === ProtocolType.HTTPS ? 'none' : undefined, - maxAge: 24 * 60 * 60 * 1000 // 24 hours -} - const onError: ErrorRequestHandler = (err, req, res, next) => { console.error(err.stack) res.status(500).send('Something broke!') diff --git a/api/src/utils/verifyEnvVariables.ts b/api/src/utils/verifyEnvVariables.ts index 84efa08..a36866f 100644 --- a/api/src/utils/verifyEnvVariables.ts +++ b/api/src/utils/verifyEnvVariables.ts @@ -267,7 +267,7 @@ const verifyRUN_TIMES = (): string[] => { return errors } -const verifyExecutablePaths = () => { +const verifyExecutablePaths = (): string[] => { const errors: string[] = [] const { RUN_TIMES, SAS_PATH, NODE_PATH, PYTHON_PATH, R_PATH, MODE } = process.env