Move all specific cookie logic to cookie-helper

This commit is contained in:
Chloe Herd 2023-12-01 08:37:22 -05:00
parent 4510241bdd
commit 0ba926d20c
2 changed files with 84 additions and 59 deletions

View file

@ -78,6 +78,38 @@ export function getDeviceIdValue() {
return "00000000-0000-0000-0000-000000000000";
}
export function regenerateDeviceId() {
if (!isCookieSet(cookieNames.DXDEV)) {
setCookieProperties(
{
[cookieNames.DXDEV]: `did=${crypto.randomUUID()}`,
},
{ maxAge: 365 * 24 * 60 * 60 }
);
}
}
export function getUserIdValue() {
const cookieValue = getCookieValueByName(cookieNames.FUNNEL_USER_ID);
if (cookieValue) {
return cookieValue;
}
return "00000000-0000-0000-0000-000000000000";
}
export function regenerateUserId() {
if (!isCookieSet(cookieNames.FUNNEL_USER_ID)) {
setCookieProperties(
{
[cookieNames.FUNNEL_USER_ID]: crypto.randomUUID(),
},
{ maxAge: 7 * 24 * 60 * 60 }
);
}
}
/*
Gets value of skey cookie, returns 0 if not found.
*/
@ -91,6 +123,17 @@ export function getSessionKeyValue() {
return 0;
}
export function setSessionKeyIfUnset(value) {
if (!isCookieSet(cookieNames.FUNNEL_SESSION_KEY)) {
setCookieProperties(
{
[cookieNames.FUNNEL_SESSION_KEY]: value,
},
{ maxAge: 30 * 60 }
);
}
}
/*
Gets value of skey cookie, returns 0 if not found.
*/
@ -104,6 +147,17 @@ export function getSessionIdValue() {
return "00000000-0000-0000-0000-000000000000";
}
export function setSessionIdIfUnset(value) {
if (!isCookieSet(cookieNames.SESSION_ID)) {
setCookieProperties(
{
[cookieNames.SESSION_ID]: value,
},
{ maxAge: 30 * 60 }
);
}
}
/*
Updates session ID cookie with new expiration date
*/
@ -111,16 +165,6 @@ export function updateSessionIdCookie() {
createOrUpdateCookie(cookieNames.SESSION_ID, getSessionIdValue(), { maxAge: 60 * 30 });
}
export function getUserIdValue() {
const cookieValue = getCookieValueByName(cookieNames.FUNNEL_USER_ID);
if (cookieValue) {
return cookieValue;
}
return "00000000-0000-0000-0000-000000000000";
}
export function setCookieProperties(
properties,
{ useDefaultFunnelCookieAttributes = true, maxAge, isSecure }
@ -142,6 +186,22 @@ export function isCookieSet(name) {
return !!val;
}
export function areAllSessionCookiesSet() {
return (
isCookieSet(cookieNames.SESSION_ID) &&
isCookieSet(cookieNames.DXDEV) &&
isCookieSet(cookieNames.FUNNEL_SESSION_KEY) &&
isCookieSet(cookieNames.FUNNEL_USER_ID)
);
}
export function refreshSessionExpiration() {
refreshCookieExpiration(cookieNames.SESSION_ID, 30 * 60);
refreshCookieExpiration(cookieNames.DXDEV, 365 * 24 * 60 * 60);
refreshCookieExpiration(cookieNames.FUNNEL_USER_ID, 7 * 24 * 60 * 60);
refreshCookieExpiration(cookieNames.FUNNEL_SESSION_KEY, 30 * 60);
}
export function refreshCookieExpiration(name, expirationTime) {
if (isCookieSet(name)) {
createOrUpdateCookie(name, getCookieValueByName(name), { maxAge: expirationTime });

View file

@ -6,7 +6,12 @@ import {
getSessionKeyValue,
getUserIdValue,
isCookieSet,
refreshCookieExpiration,
regenerateDeviceId,
regenerateUserId,
refreshSessionExpiration,
areAllSessionCookiesSet,
setSessionIdIfUnset,
setSessionKeyIfUnset,
} from "@/helpers/heritage-integration/cookie-helper";
import { queryStrings } from "@/constants/query-strings";
import { experimentSettings } from "@/constants/experiments";
@ -139,22 +144,8 @@ export default {
},
async initSession() {
if (!isCookieSet(cookieNames.FUNNEL_USER_ID)) {
setCookieProperties(
{
[cookieNames.FUNNEL_USER_ID]: crypto.randomUUID(),
},
{ maxAge: 7 * 24 * 60 * 60 }
);
}
if (!isCookieSet(cookieNames.DXDEV)) {
setCookieProperties(
{
[cookieNames.DXDEV]: crypto.randomUUID(),
},
{ maxAge: 365 * 24 * 60 * 60 }
);
}
regenerateDeviceId();
regenerateUserId();
const userId = getUserIdValue(); // cookieNames.FUNNEL_USER_ID
const deviceId = getDeviceIdValue(); // cookieNames.DXDEV
@ -178,37 +169,18 @@ export default {
);
if (response?.data) {
if (response.data.sessionKey && !isCookieSet(cookieNames.FUNNEL_SESSION_KEY)) {
setCookieProperties(
{
[cookieNames.FUNNEL_SESSION_KEY]: response.data.sessionKey,
},
{
maxAge: 30 * 60,
}
);
if (response.data.sessionKey) {
setSessionKeyIfUnset(response.data.sessionKey);
}
if (response.data.sessionId && !isCookieSet(cookieNames.SESSION_ID)) {
setCookieProperties(
{
[cookieNames.SESSION_ID]: response.data.sessionId,
},
{
maxAge: 30 * 60,
}
);
if (response.data.sessionId) {
setSessionIdIfUnset(response.data.sessionId);
}
}
},
noSession() {
return !(
isCookieSet(cookieNames.SESSION_ID) &&
isCookieSet(cookieNames.DXDEV) &&
isCookieSet(cookieNames.FUNNEL_SESSION_KEY) &&
isCookieSet(cookieNames.FUNNEL_USER_ID)
);
return !areAllSessionCookiesSet();
},
async validateSession() {
@ -216,14 +188,7 @@ export default {
await this.initSession();
}
this.refreshSessionExpiration();
},
refreshSessionExpiration() {
refreshCookieExpiration(cookieNames.SESSION_ID, 30 * 60);
refreshCookieExpiration(cookieNames.DXDEV, 365 * 24 * 60 * 60);
refreshCookieExpiration(cookieNames.FUNNEL_USER_ID, 7 * 24 * 60 * 60);
refreshCookieExpiration(cookieNames.FUNNEL_SESSION_KEY, 30 * 60);
refreshSessionExpiration();
},
removeParamsFromEndpoint(endpoint) {