|
import { URLSearchParams } from 'url'; |
|
import getCurrentUser from '../common/get-current-user.js'; |
|
|
|
const verifyCredentials = async ($) => { |
|
const oauthRedirectUrlField = $.app.auth.fields.find( |
|
(field) => field.key == 'oAuthRedirectUrl' |
|
); |
|
const redirectUri = oauthRedirectUrlField.value; |
|
const params = new URLSearchParams({ |
|
grant_type: 'authorization_code', |
|
code: $.auth.data.code, |
|
redirect_uri: redirectUri, |
|
}); |
|
|
|
const headers = { |
|
Authorization: `Basic ${Buffer.from( |
|
$.auth.data.clientId + ':' + $.auth.data.clientSecret |
|
).toString('base64')}`, |
|
'Content-Type': 'application/x-www-form-urlencoded', |
|
}; |
|
|
|
const response = await $.http.post( |
|
`https://oauth.pipedrive.com/oauth/token`, |
|
params.toString(), |
|
{ headers } |
|
); |
|
|
|
const { |
|
access_token: accessToken, |
|
api_domain: apiDomain, |
|
expires_in: expiresIn, |
|
refresh_token: refreshToken, |
|
scope: scope, |
|
token_type: tokenType, |
|
} = response.data; |
|
|
|
await $.auth.set({ |
|
accessToken, |
|
apiDomain, |
|
expiresIn, |
|
refreshToken, |
|
scope, |
|
tokenType, |
|
}); |
|
|
|
const user = await getCurrentUser($); |
|
|
|
const screenName = [user.name, user.company_domain] |
|
.filter(Boolean) |
|
.join(' @ '); |
|
|
|
await $.auth.set({ |
|
userId: user.id, |
|
screenName, |
|
}); |
|
}; |
|
|
|
export default verifyCredentials; |
|
|