34 lines
1.3 KiB
JavaScript
34 lines
1.3 KiB
JavaScript
function createAuthSalesCommon({
|
|
TOKEN_RELAY_URL,
|
|
authSalesCommonState,
|
|
requestTokenRelay
|
|
}) {
|
|
function requestTokenRelaySalesCommon() {
|
|
if (authSalesCommonState.salesCommonToken && Date.now() < authSalesCommonState.salesCommonToken.expiresAt) {
|
|
return Promise.resolve(authSalesCommonState.salesCommonToken.access_token);
|
|
}
|
|
if (authSalesCommonState.salesCommonTokenRequest) {
|
|
return authSalesCommonState.salesCommonTokenRequest;
|
|
}
|
|
authSalesCommonState.salesCommonTokenRequest = requestTokenRelay({
|
|
name: "requestTokenRelaySalesCommon",
|
|
url: `${TOKEN_RELAY_URL}?scopesfq=urn%3Aopc%3Aresource%3Afusion%3Aeeho%3Asales-common%2F`,
|
|
includeExpiry: true
|
|
}).then((token) => {
|
|
authSalesCommonState.salesCommonToken = token;
|
|
return token.access_token;
|
|
}).finally(() => {
|
|
authSalesCommonState.salesCommonTokenRequest = null;
|
|
});
|
|
return authSalesCommonState.salesCommonTokenRequest;
|
|
}
|
|
|
|
function invalidateSalesCommonToken(rejectedToken) {
|
|
if (authSalesCommonState.salesCommonToken && authSalesCommonState.salesCommonToken.access_token === rejectedToken) {
|
|
authSalesCommonState.salesCommonToken = null;
|
|
}
|
|
}
|
|
|
|
return { requestTokenRelaySalesCommon, invalidateSalesCommonToken };
|
|
}
|