From a0001314199ad7d58dcb89bf274ea6cfc6661af5 Mon Sep 17 00:00:00 2001 From: James Date: Wed, 15 Jul 2020 19:54:57 -0400 Subject: [PATCH] allows for multiple httpOnly cookie domains --- src/auth/operations/login.js | 11 ++++++++++- src/auth/operations/logout.js | 11 ++++++++++- src/auth/operations/refresh.js | 11 ++++++++++- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/auth/operations/login.js b/src/auth/operations/login.js index 98f3c8fcfe..c32857f359 100644 --- a/src/auth/operations/login.js +++ b/src/auth/operations/login.js @@ -74,7 +74,16 @@ const login = async (args) => { cookieOptions.secure = true; } - args.res.cookie(`${config.cookiePrefix}-token`, token, cookieOptions); + if (Array.isArray(collectionConfig.auth.cookieDomains)) { + collectionConfig.auth.cookieDomains.forEach((domain) => { + args.res.cookie(`${config.cookiePrefix}-token`, token, { + ...cookieOptions, + domain, + }); + }); + } else { + args.res.cookie(`${config.cookiePrefix}-token`, token, cookieOptions); + } } // ///////////////////////////////////// diff --git a/src/auth/operations/logout.js b/src/auth/operations/logout.js index 721eb1afd5..3b8528c8fc 100644 --- a/src/auth/operations/logout.js +++ b/src/auth/operations/logout.js @@ -18,7 +18,16 @@ const logout = async (args) => { cookieOptions.secure = true; } - res.cookie(`${config.cookiePrefix}-token`, '', cookieOptions); + if (Array.isArray(collectionConfig.auth.cookieDomains)) { + collectionConfig.auth.cookieDomains.forEach((domain) => { + args.res.cookie(`${config.cookiePrefix}-token`, '', { + ...cookieOptions, + domain, + }); + }); + } else { + args.res.cookie(`${config.cookiePrefix}-token`, '', cookieOptions); + } return 'Logged out successfully.'; }; diff --git a/src/auth/operations/refresh.js b/src/auth/operations/refresh.js index 9af70d0fdb..736b02f36c 100644 --- a/src/auth/operations/refresh.js +++ b/src/auth/operations/refresh.js @@ -41,7 +41,16 @@ const refresh = async (args) => { cookieOptions.secure = true; } - args.res.cookie(`${cookiePrefix}-token`, refreshedToken, cookieOptions); + if (Array.isArray(options.collection.config.auth.cookieDomains)) { + options.collection.config.auth.cookieDomains.forEach((domain) => { + args.res.cookie(`${cookiePrefix}-token`, refreshedToken, { + ...cookieOptions, + domain, + }); + }); + } else { + args.res.cookie(`${cookiePrefix}-token`, refreshedToken, cookieOptions); + } }