diff --git a/configs/app/app.ts b/configs/app/app.ts index fe0bf7f273..21d31f90fc 100644 --- a/configs/app/app.ts +++ b/configs/app/app.ts @@ -21,7 +21,7 @@ const app = Object.freeze({ isDev, isReview, isPw, - protocol: appSchema, + protocol: appSchema || 'https', host: appHost, port: appPort, baseUrl, diff --git a/lib/cookies.ts b/lib/cookies.ts index 22bd23de37..fb09e0128f 100644 --- a/lib/cookies.ts +++ b/lib/cookies.ts @@ -1,5 +1,6 @@ import Cookies from 'js-cookie'; +import config from 'configs/app'; import { isBrowser } from 'toolkit/utils/isBrowser'; /** @@ -40,6 +41,11 @@ export const PRIVATE_MODE_DISALLOWED: ReadonlyArray = [ NAMES.MIXPANEL_DEBUG, ]; +export const getDefaultAttributes = () => ({ + path: '/', + secure: config.app.protocol === 'https', +}); + export function get(name?: NAMES | undefined | null, serverCookie?: string) { if (!isBrowser()) { return serverCookie ? getFromCookieString(serverCookie, name) : undefined; @@ -72,13 +78,11 @@ export function set(name: NAMES, value: string, attributes: Cookies.CookieAttrib return; } - attributes.path = '/'; - - return Cookies.set(name, value, attributes); + return Cookies.set(name, value, { ...getDefaultAttributes(), ...attributes }); } export function remove(name: NAMES, attributes: Cookies.CookieAttributes = {}) { - return Cookies.remove(name, attributes); + return Cookies.remove(name, { ...getDefaultAttributes(), ...attributes }); } export function getFromCookieString(cookieString: string, name?: NAMES | undefined | null) { diff --git a/nextjs/getServerSideProps/handlers.ts b/nextjs/getServerSideProps/handlers.ts index 33b2a2bf43..d73843063c 100644 --- a/nextjs/getServerSideProps/handlers.ts +++ b/nextjs/getServerSideProps/handlers.ts @@ -42,7 +42,7 @@ Promise>> => { let uuid = cookies.getFromCookieString(req.headers.cookie || '', cookies.NAMES.UUID); if (!uuid && appProfile !== 'private') { uuid = crypto.randomUUID(); - res.setHeader('Set-Cookie', `${ cookies.NAMES.UUID }=${ uuid }`); + res.setHeader('Set-Cookie', `${ cookies.NAMES.UUID }=${ uuid }; Path=/${ config.app.protocol === 'https' ? '; Secure' : '' }`); } const isTrackingDisabled = process.env.DISABLE_TRACKING === 'true' || appProfile === 'private'; diff --git a/nextjs/middlewares/addressFormat.ts b/nextjs/middlewares/addressFormat.ts index bfd8bf14e0..3925a1c673 100644 --- a/nextjs/middlewares/addressFormat.ts +++ b/nextjs/middlewares/addressFormat.ts @@ -12,9 +12,9 @@ export default function addressFormatMiddleware(req: NextRequest, res: NextRespo if (addressFormatCookie) { const isValidCookie = config.UI.views.address.hashFormat.availableFormats.includes(addressFormatCookie.value as AddressFormat); if (!isValidCookie) { - res.cookies.set(cookiesLib.NAMES.ADDRESS_FORMAT, defaultFormat, { path: '/' }); + res.cookies.set(cookiesLib.NAMES.ADDRESS_FORMAT, defaultFormat, cookiesLib.getDefaultAttributes()); } } else { - res.cookies.set(cookiesLib.NAMES.ADDRESS_FORMAT, defaultFormat, { path: '/' }); + res.cookies.set(cookiesLib.NAMES.ADDRESS_FORMAT, defaultFormat, cookiesLib.getDefaultAttributes()); } } diff --git a/nextjs/middlewares/appProfile.ts b/nextjs/middlewares/appProfile.ts index 412a96beb0..15af875b37 100644 --- a/nextjs/middlewares/appProfile.ts +++ b/nextjs/middlewares/appProfile.ts @@ -13,8 +13,11 @@ export default function appProfileMiddleware(req: NextRequest, res: NextResponse const profileValue = headerValue || queryValue; if (profileValue === PRIVATE_PROFILE_VALUE) { - res.cookies.set(cookiesLib.NAMES.APP_PROFILE, PRIVATE_PROFILE_VALUE, { path: '/' }); + res.cookies.set(cookiesLib.NAMES.APP_PROFILE, PRIVATE_PROFILE_VALUE, cookiesLib.getDefaultAttributes()); } else { - res.cookies.delete(cookiesLib.NAMES.APP_PROFILE); + res.cookies.delete({ + name: cookiesLib.NAMES.APP_PROFILE, + ...cookiesLib.getDefaultAttributes(), + }); } } diff --git a/nextjs/middlewares/colorTheme.ts b/nextjs/middlewares/colorTheme.ts index 101eaf7ba7..d713eb7cac 100644 --- a/nextjs/middlewares/colorTheme.ts +++ b/nextjs/middlewares/colorTheme.ts @@ -8,8 +8,8 @@ export default function colorThemeMiddleware(req: NextRequest, res: NextResponse if (!colorModeCookie) { if (appConfig.UI.colorTheme.default) { - res.cookies.set(cookiesLib.NAMES.COLOR_MODE, appConfig.UI.colorTheme.default.colorMode, { path: '/' }); - res.cookies.set(cookiesLib.NAMES.COLOR_THEME, appConfig.UI.colorTheme.default.id, { path: '/' }); + res.cookies.set(cookiesLib.NAMES.COLOR_MODE, appConfig.UI.colorTheme.default.colorMode, cookiesLib.getDefaultAttributes()); + res.cookies.set(cookiesLib.NAMES.COLOR_THEME, appConfig.UI.colorTheme.default.id, cookiesLib.getDefaultAttributes()); } } } diff --git a/nextjs/middlewares/poorReputationTokens.ts b/nextjs/middlewares/poorReputationTokens.ts index 4ec17439a7..ec0bfbc463 100644 --- a/nextjs/middlewares/poorReputationTokens.ts +++ b/nextjs/middlewares/poorReputationTokens.ts @@ -8,7 +8,7 @@ export default function poorReputationTokensMiddleware(req: NextRequest, res: Ne const showPoorReputationTokensCookie = req.cookies.get(cookiesLib.NAMES.SHOW_POOR_REPUTATION_TOKENS); if (!showPoorReputationTokensCookie) { - res.cookies.set(cookiesLib.NAMES.SHOW_POOR_REPUTATION_TOKENS, 'false', { path: '/' }); + res.cookies.set(cookiesLib.NAMES.SHOW_POOR_REPUTATION_TOKENS, 'false', cookiesLib.getDefaultAttributes()); } } } diff --git a/nextjs/middlewares/scamTokens.ts b/nextjs/middlewares/scamTokens.ts index d28f2d6cd9..e344af31ed 100644 --- a/nextjs/middlewares/scamTokens.ts +++ b/nextjs/middlewares/scamTokens.ts @@ -8,7 +8,7 @@ export default function scamTokensMiddleware(req: NextRequest, res: NextResponse const showScamTokensCookie = req.cookies.get(cookiesLib.NAMES.SHOW_SCAM_TOKENS); if (!showScamTokensCookie) { - res.cookies.set(cookiesLib.NAMES.SHOW_SCAM_TOKENS, 'false', { path: '/' }); + res.cookies.set(cookiesLib.NAMES.SHOW_SCAM_TOKENS, 'false', cookiesLib.getDefaultAttributes()); } } }