UNPKG

@sap/cli-core

Version:

Command-Line Interface (CLI) Core Module

43 lines (42 loc) 2.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.create = void 0; const next_1 = require("../../../next"); const options_1 = require("../../../options"); const constants_1 = require("../../../../../constants"); const logger_1 = require("../../../../../logger"); const types_1 = require("../../../../../types"); const utils_1 = require("../utils"); const utils_2 = require("./utils"); const SecretsStorageSingleton_1 = require("../../../../../cache/secrets/SecretsStorageSingleton"); const getLogger = () => (0, logger_1.get)("commands.handler.authentication.oauth.tokenProvider.getToken"); const createGetTokenHandler = (overrideExisting) => { const handler = async () => async () => { const { info: logInfo, debug } = getLogger(); logInfo("checking token existence"); const secrets = await SecretsStorageSingleton_1.SecretsStorageSingleton.SINGLETON.getDefaultSecret(); if (overrideExisting || (!secrets.access_token && !secrets.refresh_token)) { debug(`access token not available or overrideExisting=${overrideExisting}, retrieving token from server`); if (secrets.authorization_flow === types_1.GrantType.authorization_code) { const code = await (0, utils_2.getCode)(secrets.authorization_url, secrets.client_id); debug("code received, reading token"); await (0, utils_1.readToken)({ code, grant_type: secrets.authorization_flow }); } else if (secrets.authorization_flow === types_1.GrantType.client_credentials) { await (0, utils_1.readToken)({ grant_type: secrets.authorization_flow }); } else { throw new Error(`invalid grant type ${secrets.authorization_flow}`); } } else if (secrets.access_token) { debug("token available"); } else { throw new Error("access token not available"); } }; return handler; }; const create = (overrideExisting = false) => (0, next_1.create)("commands.handler.authentication.oauth.tokenProvider.getToken", (0, options_1.create)(constants_1.OPTION_CODE), createGetTokenHandler(overrideExisting)); exports.create = create;