@sap/cli-core
Version:
Command-Line Interface (CLI) Core Module
43 lines (42 loc) • 2.26 kB
JavaScript
;
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;