diff --git a/node/clients/checkout.ts b/node/clients/checkout.ts index 464810ef..58c0fb6a 100644 --- a/node/clients/checkout.ts +++ b/node/clients/checkout.ts @@ -30,7 +30,7 @@ export class Checkout extends JanusClient { } private getCommonHeaders = () => { - const { orderFormId, ownerId, segmentToken, sessionToken } = this + const { orderFormId, ownerId, segmentToken, sessionToken, rcSessionIdv7, rcMacIdv7 } = this .context as CustomIOContext const checkoutCookie = orderFormId ? checkoutCookieFormat(orderFormId) : '' @@ -43,8 +43,11 @@ export class Checkout extends JanusClient { ? `vtex_session=${sessionToken};` : '' + const rcSessionCookie = rcSessionIdv7 ? `VtexRCSessionIdv7=${rcSessionIdv7};` : '' + const rcMacCookie = rcMacIdv7 ? `VtexRCMacIdv7=${rcMacIdv7};` : '' + return { - Cookie: `${checkoutCookie}${ownershipCookie}${segmentTokenCookie}${sessionTokenCookie}`, + Cookie: `${checkoutCookie}${ownershipCookie}${segmentTokenCookie}${sessionTokenCookie}${rcSessionCookie}${rcMacCookie}`, } } diff --git a/node/directives/withOwnerId.ts b/node/directives/withOwnerId.ts index 03756317..eb848d23 100644 --- a/node/directives/withOwnerId.ts +++ b/node/directives/withOwnerId.ts @@ -1,16 +1,16 @@ import { defaultFieldResolver, GraphQLField } from 'graphql' import { SchemaDirectiveVisitor } from 'graphql-tools' -import { getOwnerIdFromCookie } from '../utils' +import { getOwnerIdFromCookie, getRcSessionIdFromCookie, getRcMacIdFromCookie } from '../utils' export class WithOwnerId extends SchemaDirectiveVisitor { public visitFieldDefinition(field: GraphQLField) { const { resolve = defaultFieldResolver } = field field.resolve = async (root: any, args: any, ctx: Context, info: any) => { - const checkoutOwnerId = getOwnerIdFromCookie(ctx.cookies) - - ctx.vtex.ownerId = checkoutOwnerId + ctx.vtex.ownerId = getOwnerIdFromCookie(ctx.cookies) + ctx.vtex.rcSessionIdv7 = getRcSessionIdFromCookie(ctx.cookies) + ctx.vtex.rcMacIdv7 = getRcMacIdFromCookie(ctx.cookies) return resolve(root, args, ctx, info) } diff --git a/node/globals.ts b/node/globals.ts index a94af9e8..54d50ec9 100644 --- a/node/globals.ts +++ b/node/globals.ts @@ -29,6 +29,8 @@ declare global { segment?: SegmentData orderFormId?: string ownerId?: string + rcSessionIdv7?: string + rcMacIdv7?: string } interface StoreGraphQLDataSources { diff --git a/node/utils/cookie.ts b/node/utils/cookie.ts index 29319edc..dfbb7d04 100644 --- a/node/utils/cookie.ts +++ b/node/utils/cookie.ts @@ -35,6 +35,8 @@ const parseCookie = (cookie: string): ParsedCookie => { const CHECKOUT_COOKIE = 'checkout.vtex.com' const ASPXAUTH_COOKIE = '.ASPXAUTH' const OWNERSHIP_COOKIE = 'CheckoutOrderFormOwnership' +const RC_SESSION_COOKIE = 'VtexRCSessionIdv7' +const RC_MAC_COOKIE = 'VtexRCMacIdv7' const checkoutCookieFormat = (orderFormId: string) => `${CHECKOUT_COOKIE}=__ofid=${orderFormId};` @@ -53,11 +55,21 @@ export function getOwnerIdFromCookie(cookies: Context['cookies']) { return cookies.get(OWNERSHIP_COOKIE) } +export function getRcSessionIdFromCookie(cookies: Context['cookies']) { + return cookies.get(RC_SESSION_COOKIE) +} + +export function getRcMacIdFromCookie(cookies: Context['cookies']) { + return cookies.get(RC_MAC_COOKIE) +} + export { isUserLoggedIn, CHECKOUT_COOKIE, ASPXAUTH_COOKIE, OWNERSHIP_COOKIE, + RC_SESSION_COOKIE, + RC_MAC_COOKIE, checkoutCookieFormat, getOrderFormIdFromCookie, parseCookie,