Ao tentar realizar uma verificação basiada no cookie da requesição sempre ocorre uma falha, onde funciona no site do exemplo https://{{vendor}}.myvtex.com
, mas no site da loja mesmo a verificação sempre falha pois o ctx.vtex.storeUserAuthToken
está sempre nulo como fazer para enviar este token nas minhas requisições do frontend com o backend exemplo:
No frontend faço uma requisição com os seguintes paramêtros:
const { loading: loadingAuth, data: dataAuth } = useFullSession()
const cookie = dataAuth?.session?.namespaces?.cookie
const token = cookie?.VtexIdclientAutCookie?.value ?? cookie?.VtexIdclientAutCookie_t05130?.value ?? ' '
const optionsGetFromDocuments: any = {
method: 'GET',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
'Access-Control-Allow-Origin': '*',
'Cookie': 'VtexIdclientAutCookie=' + token
}
}
const responseJson = await fetch(
`/_v/budget/${email}`,
optionsGetFromDocuments
)
Onde isto até mesmo retirando o header ‘Cookie’ funciona quando estou no site https://{{vendor}}.myvtex.com
, recebo o token do usuário e faço a validação
No backend eu tenho algo como :
ctx.set('Cache-Control','no-cache, no-store, must-revalidate');
ctx.set('X-VTEX-Use-Https','true')
ctx.set('Proxy-Authorization','ctx.authToken')
ctx.set('Access-Control-Allow-Origin','*')
ctx.set('Access-Control-Allow-Credentials','true')
const {
vtex: {
route: { params },
},
} = ctx
const { email } = params
const user = await ctx.clients.profile.getUserByToken(ctx.vtex.adminUserAuthToken ?? ctx.vtex.storeUserAuthToken ?? '').catch((reason: any) => {
return reason?.response?.data
})
if ((user && user?.userId) && ctx.vtex.adminUserAuthToken) {
await next()
}else if ((user && user?.userId) && ctx.vtex.storeUserAuthToken) {
if (email !== user.user) {
throw new NotFoundError({
message: 'not found',
stack: 'not found'
})
} else {
await next()
}
} else {
throw new ForbiddenError({
message: 'Forbidden',
stack: 'forbidden'
})
}
porém sempre recebo undefined
dos tokens ctx.vtex.storeUserAuthToken
e ctx.vtex.adminUserAuthToken
oque devo fazer para receber esses valores na loja de produção também ?