UNPKG

1.92 kBJavaScriptView Raw
1const OAuth2Manager = require('@hubspot/api-auth-lib/OAuth2Manager');
2const { updatePortalConfig, getPortalConfig } = require('./lib/config');
3const { logger, logErrorInstance } = require('./logger');
4const { AUTH_METHODS, DEFAULT_OAUTH_SCOPES } = require('./lib/constants');
5
6const oauthManagers = new Map();
7
8const writeOauthTokenInfo = (portalConfig, tokenInfo) => {
9 const { portalId, authType, auth, env, name, apiKey } = portalConfig;
10
11 logger.debug(`Updating Oauth2 token info for portalId: ${portalId}`);
12
13 updatePortalConfig({
14 name,
15 apiKey,
16 environment: env,
17 portalId,
18 authType,
19 ...auth,
20 tokenInfo,
21 });
22};
23
24const getOauthManager = (portalId, portalConfig) => {
25 if (!oauthManagers.has(portalId)) {
26 const writeTokenInfo = tokenInfo => {
27 writeOauthTokenInfo(portalConfig, tokenInfo);
28 };
29 oauthManagers.set(
30 portalId,
31 OAuth2Manager.fromConfig(portalId, portalConfig, logger, writeTokenInfo)
32 );
33 }
34 return oauthManagers.get(portalId);
35};
36
37const setupOauth = (portalId, portalConfig) => {
38 const config = getPortalConfig(portalId) || {};
39 return new OAuth2Manager(
40 {
41 ...portalConfig,
42 environment: config.env || 'prod',
43 },
44 logger
45 );
46};
47
48const addOauthToPortalConfig = (portalId, oauth) => {
49 logger.log('Updating configuration');
50 try {
51 updatePortalConfig({
52 ...oauth.toObj(),
53 authType: AUTH_METHODS.oauth.value,
54 portalId,
55 });
56 logger.log('Configuration updated');
57 } catch (err) {
58 logErrorInstance(err);
59 }
60};
61
62const authenticateWithOauth = async configData => {
63 const portalId = parseInt(configData.portalId, 10);
64 const oauth = setupOauth(portalId, {
65 scopes: DEFAULT_OAUTH_SCOPES,
66 ...configData,
67 });
68 logger.log('Authorizing');
69 await oauth.authorize();
70 addOauthToPortalConfig(portalId, oauth);
71};
72
73module.exports = {
74 getOauthManager,
75 authenticateWithOauth,
76};