UNPKG

@app-connect/core

Version:
63 lines (56 loc) 2.63 kB
const axios = require('axios'); const { AdminConfigModel } = require('../models/adminConfigModel'); const adapterRegistry = require('../adapter/registry'); const oauth = require('../lib/oauth'); async function validateAdminRole({ rcAccessToken }) { const rcExtensionResponse = await axios.get( 'https://platform.ringcentral.com/restapi/v1.0/account/~/extension/~', { headers: { Authorization: `Bearer ${rcAccessToken}`, }, }); return { isValidated: !!rcExtensionResponse.data?.permissions?.admin?.enabled || (!!process.env.ADMIN_EXTENSION_ID_DEV_PASS_LIST && process.env.ADMIN_EXTENSION_ID_DEV_PASS_LIST.split(',').includes(rcExtensionResponse.data.id.toString())), rcAccountId: rcExtensionResponse.data.account.id }; } async function upsertAdminSettings({ hashedRcAccountId, adminSettings }) { let existingAdminConfig = await AdminConfigModel.findByPk(hashedRcAccountId); if (existingAdminConfig) { await existingAdminConfig.update({ ...adminSettings }); } else { await AdminConfigModel.create({ id: hashedRcAccountId, ...adminSettings }); } } async function getAdminSettings({ hashedRcAccountId }) { const existingAdminConfig = await AdminConfigModel.findByPk(hashedRcAccountId); return existingAdminConfig; } async function getServerLoggingSettings({ user }) { const platformModule = adapterRegistry.getAdapter(user.platform); if (platformModule.getServerLoggingSettings) { const serverLoggingSettings = await platformModule.getServerLoggingSettings({ user }); return serverLoggingSettings; } return {}; } async function updateServerLoggingSettings({ user, additionalFieldValues }) { const platformModule = adapterRegistry.getAdapter(user.platform); const oauthApp = oauth.getOAuthApp((await platformModule.getOauthInfo({ tokenUrl: user?.platformAdditionalInfo?.tokenUrl, hostname: user?.hostname }))); if (platformModule.updateServerLoggingSettings) { const { successful, returnMessage } = await platformModule.updateServerLoggingSettings({ user, additionalFieldValues, oauthApp }); return { successful, returnMessage }; } return {}; } exports.validateAdminRole = validateAdminRole; exports.upsertAdminSettings = upsertAdminSettings; exports.getAdminSettings = getAdminSettings; exports.getServerLoggingSettings = getServerLoggingSettings; exports.updateServerLoggingSettings = updateServerLoggingSettings;