From b956be36e511067f2827729f7c05d685e7c36eda Mon Sep 17 00:00:00 2001 From: Tiaraju Smaneoto Date: Thu, 7 May 2026 19:29:37 -0300 Subject: [PATCH] forwarding cookies --- CHANGELOG.md | 4 ++++ node/clients/checkout.ts | 7 +++++-- node/directives/withOwnerId.ts | 8 ++++---- node/globals.ts | 2 ++ node/utils/cookie.ts | 13 +++++++++++++ 5 files changed, 28 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b9ecb6eb0..03b754aeb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] +### Added + +- Forward `VtexRCSessionIdv7` and `VtexRCMacIdv7` cookies to the Checkout API + ## [2.177.0] - 2026-05-07 ### Changed diff --git a/node/clients/checkout.ts b/node/clients/checkout.ts index 464810ef0..58c0fb6a5 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 037563174..eb848d23a 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 0a64a2c53..be00b6159 100644 --- a/node/globals.ts +++ b/node/globals.ts @@ -31,6 +31,8 @@ declare global { segment?: SegmentData orderFormId?: string ownerId?: string + rcSessionIdv7?: string + rcMacIdv7?: string } interface UserAddress { diff --git a/node/utils/cookie.ts b/node/utils/cookie.ts index 29319edc5..f57cf8219 100644 --- a/node/utils/cookie.ts +++ b/node/utils/cookie.ts @@ -53,11 +53,24 @@ export function getOwnerIdFromCookie(cookies: Context['cookies']) { return cookies.get(OWNERSHIP_COOKIE) } +const RC_SESSION_COOKIE = 'VtexRCSessionIdv7' +const RC_MAC_COOKIE = 'VtexRCMacIdv7' + +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,