diff --git a/cap-js-attachments-sdm-1.0.0.tgz b/cap-js-attachments-sdm-1.0.0.tgz new file mode 100644 index 0000000..8f35a72 Binary files /dev/null and b/cap-js-attachments-sdm-1.0.0.tgz differ diff --git a/lib/util/index.js b/lib/util/index.js index bc75390..b3b16f3 100644 --- a/lib/util/index.js +++ b/lib/util/index.js @@ -7,11 +7,14 @@ async function fetchAccessToken(credentials,jwt) { let access_token = cache.get("SDM_ACCESS_TOKEN"); // to check if token exists if (access_token === undefined) { access_token = await generateSDMBearerToken(credentials,jwt); - cache.set("SDM_ACCESS_TOKEN", access_token, 11 * 3600); //expires after 11 hours + let user = decodeAccessToken(access_token).email; + cache.set(user, access_token, 11 * 3600); //expires after 11 hours } else { - if(isTokenExpired(access_token)){ + let decoded_token = decodeAccessToken(jwtEncoded); + if(isTokenExpired(decoded_token.exp)){ access_token = generateSDMBearerToken(credentials,jwt); -cache.set("SDM_ACCESS_TOKEN", access_token, 11 * 3600); //expires after 11 hours +cache.del(decoded_token.email); +cache.set(decoded_token.email, access_token, 11 * 3600); //expires after 11 hours } } @@ -36,14 +39,17 @@ return new Promise(function (resolve, reject) { ); }); } -function isTokenExpired(jwtEncoded){ - const jwtBase64Encoded = jwtEncoded.split('.')[1]; - const jwtDecodedAsString = Buffer.from(jwtBase64Encoded, 'base64').toString('ascii'); - const jwtDecodedJson = JSON.parse(jwtDecodedAsString); - var expiry = new Date(jwtDecodedJson.exp * 1000); +function isTokenExpired(exp){ + + var expiry = new Date(exp * 1000); var now = new Date(); return now>expiry; } +function decodeAccessToken(jwtEncoded){ +const jwtBase64Encoded = jwtEncoded.split('.')[1]; + const jwtDecodedAsString = Buffer.from(jwtBase64Encoded, 'base64').toString('ascii'); + return JSON.parse(jwtDecodedAsString); +} function getConfigurations() { return cds.env.requires?.["attachments-sdm"]?.settings || {};