Generating a JWT Authentication Token with Wix Code

Hello Guys,

I have been struggling to run this Postman Pre-request script using Wix code. I am using it to generate a token then using it in the header to place a PUT request

Can you offer any suggestions?

Thanks a mil

var apiKey = “1234”,
apiSecret = “1234”;

var jwtBody = {
“key”: apiKey,
“exp”: Math.floor(new Date().getTime() / 1000) + 30,
“iat”: Math.floor(new Date().getTime() / 1000),
“url”: request.url,
“method”: request.method
};

if (request.hasOwnProperty(“data”) && request.data !== null && request.data.length > 0) {
jwtBody.signature = CryptoJS.SHA256(request.data).toString(CryptoJS.enc.Hex);
}

postman.setEnvironmentVariable(‘jwt’, "PKAuth " + generateJWT(jwtBody, apiSecret));

function generateJWT(body, secret) {
header = {
“alg”: “HS256”,
“typ”: “JWT”
};
var token = ;
token[0] = base64url(JSON.stringify(header));
token[1] = base64url(JSON.stringify(body));
token[2] = genTokenSign(token, secret);

return token.join("."); 

}

function genTokenSign(token, secret) {
if (token.length != 2) {
return;
}
var hash = CryptoJS.HmacSHA256(token.join(“.”), secret);
var base64Hash = CryptoJS.enc.Base64.stringify(hash);
return urlConvertBase64(base64Hash);
}

function base64url(input) {
var base64String = btoa(input);
return urlConvertBase64(base64String);
}

function urlConvertBase64(input) {
var output = input.replace(/=+$/, ‘’);
output = output.replace(/+/g, ‘-’);
output = output.replace(///g, ‘_’);

return output; 

}

Hi,
Postman is used to send HTTP requests, it only works if you have it installed on your browser so when visitors on your site would try to run the code it wouldn’t work.
Instead of using postman you can send the request using fetch, check it out here .