Skip to content

Commit ddcdaa7

Browse files
RohithVangalla1Vangalla, Rohith
andauthored
Make logged-in cookie name configurable via options (#5430)
The logged-in cookie name was hardcoded as 'loggedIn' with TODO comments indicating it should be configurable. This is needed for deployments where multiple Apostrophe instances share a domain (e.g., staging and production on subpaths) and need distinct cookie names to avoid conflicts. Changes: - Added 'loggedInCookieName' option to the login module (defaults to 'loggedIn' for backward compatibility) - Replaced all hardcoded references with self.loggedInCookieName - Removed the TODO comments Usage: modules: { '@apostrophecms/login': { options: { loggedInCookieName: 'myAppLoggedIn' } } } Addresses the TODO comments: 'get cookie name from config' Co-authored-by: Vangalla, Rohith <rohith.vangalla@optum.com>
1 parent 33bb4c0 commit ddcdaa7

1 file changed

Lines changed: 5 additions & 6 deletions

File tree

  • packages/apostrophe/modules/@apostrophecms/login

‎packages/apostrophe/modules/@apostrophecms/login/index.js‎

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ const { createId } = require('@paralleldrive/cuid2');
4747
const expressSession = require('express-session');
4848

4949
const loginAttemptsNamespace = '@apostrophecms/loginAttempt';
50-
const loggedInCookieName = 'loggedIn';
50+
const DEFAULT_LOGGED_IN_COOKIE_NAME = 'loggedIn';
5151

5252
module.exports = {
5353
cascades: [ 'requirements' ],
@@ -77,6 +77,7 @@ module.exports = {
7777
whoamiFields: []
7878
},
7979
async init(self) {
80+
self.loggedInCookieName = self.options.loggedInCookieName || DEFAULT_LOGGED_IN_COOKIE_NAME;
8081
self.passport = new Passport();
8182
self.enableSerializeUsers();
8283
self.enableDeserializeUsers();
@@ -164,8 +165,7 @@ module.exports = {
164165
const name = self.apos.modules['@apostrophecms/express'].sessionOptions.name;
165166
req.res.header('set-cookie', expireCookie.serialize(name, 'deleted'));
166167

167-
// TODO: get cookie name from config
168-
req.res.cookie(`${self.apos.shortName}.${loggedInCookieName}`, 'false');
168+
req.res.cookie(`${self.apos.shortName}.${self.loggedInCookieName}`, 'false');
169169
}
170170
},
171171
async whoami(req) {
@@ -934,7 +934,7 @@ module.exports = {
934934
// Awaitable wrapper for req.login. An implementation detail of the login
935935
// route
936936
async passportLogin(req, user) {
937-
const cookieName = `${self.apos.shortName}.${loggedInCookieName}`;
937+
const cookieName = `${self.apos.shortName}.${self.loggedInCookieName}`;
938938
if (req.cookies[cookieName] !== 'true') {
939939
req.res.cookie(cookieName, 'true');
940940
}
@@ -1201,8 +1201,7 @@ module.exports = {
12011201
addLoggedInCookie: {
12021202
before: '@apostrophecms/i18n',
12031203
middleware(req, res, next) {
1204-
// TODO: get cookie name from config
1205-
const cookieName = `${self.apos.shortName}.${loggedInCookieName}`;
1204+
const cookieName = `${self.apos.shortName}.${self.loggedInCookieName}`;
12061205
if (req.user && req.cookies[cookieName] !== 'true') {
12071206
res.cookie(cookieName, 'true');
12081207
}

0 commit comments

Comments
 (0)