diff --git a/packages/backend/src/apps/salesforce/auth/refresh-access-token.ts b/packages/backend/src/apps/salesforce/auth/refresh-access-token.ts new file mode 100644 index 00000000..84afb921 --- /dev/null +++ b/packages/backend/src/apps/salesforce/auth/refresh-access-token.ts @@ -0,0 +1,29 @@ +import { IGlobalVariable } from '@automatisch/types'; +import qs from 'querystring'; + +const refreshAccessToken = async ($: IGlobalVariable) => { + const searchParams = qs.stringify({ + grant_type: 'refresh_token', + client_id: $.auth.data.consumerKey as string, + client_secret: $.auth.data.consumerSecret as string, + refresh_token: $.auth.data.refreshToken as string, + }); + const { data } = await $.http.post( + `${$.auth.data.oauth2Url}/token?${searchParams}`, + { + additionalProperties: { + shouldRetry: false, + }, + }, + ); + + await $.auth.set({ + accessToken: data.access_token, + tokenType: data.token_type, + idToken: data.id_token, + instanceUrl: data.instance_url, + signature: data.signature, + }); +}; + +export default refreshAccessToken; diff --git a/packages/backend/src/apps/salesforce/auth/verify-credentials.ts b/packages/backend/src/apps/salesforce/auth/verify-credentials.ts index b8797368..2eabad46 100644 --- a/packages/backend/src/apps/salesforce/auth/verify-credentials.ts +++ b/packages/backend/src/apps/salesforce/auth/verify-credentials.ts @@ -20,7 +20,9 @@ const verifyCredentials = async ($: IGlobalVariable) => { await $.auth.set({ accessToken: data.access_token, + refreshToken: data.refresh_token, tokenType: data.token_type, + idToken: data.id_token, instanceUrl: data.instance_url, signature: data.signature, userId: data.id, diff --git a/packages/backend/src/helpers/http-client/index.ts b/packages/backend/src/helpers/http-client/index.ts index f53f2699..d6001bf3 100644 --- a/packages/backend/src/helpers/http-client/index.ts +++ b/packages/backend/src/helpers/http-client/index.ts @@ -43,7 +43,7 @@ export default function createHttpClient({ const { config } = error; const { status } = error.response; - if (status === 401 && $.app.auth.refreshAccessToken && config.additionalProperties.shouldRetry !== false) { + if (status === 401 && $.app.auth.refreshAccessToken && config.additionalProperties?.shouldRetry !== false) { await $.app.auth.refreshAccessToken($); // retry the request