@contentstack/cli-auth
Version:
Contentstack CLI plugin for authentication activities
86 lines (85 loc) • 5.32 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const cli_utilities_1 = require("@contentstack/cli-utilities");
const utils_1 = require("../../utils");
const base_command_1 = require("../../base-command");
class LogoutCommand extends base_command_1.BaseCommand {
async run() {
cli_utilities_1.log.debug('LogoutCommand run method started', this.contextDetails);
const { flags: logoutFlags } = await this.parse(LogoutCommand);
cli_utilities_1.log.debug('Token add flags parsed', Object.assign(Object.assign({}, this.contextDetails), { flags: logoutFlags }));
let confirm = logoutFlags.force === true || logoutFlags.yes === true;
cli_utilities_1.log.debug(`Initial confirmation status: ${confirm}`, Object.assign(Object.assign({}, this.contextDetails), { force: logoutFlags.force, yes: logoutFlags.yes }));
if (!confirm) {
cli_utilities_1.log.debug('Requesting user confirmation for logout', this.contextDetails);
confirm = await cli_utilities_1.cliux.inquire({
type: 'confirm',
message: 'CLI_AUTH_LOGOUT_CONFIRM',
name: 'confirmation',
});
cli_utilities_1.log.debug(`User confirmation received: ${confirm}`, this.contextDetails);
}
try {
cli_utilities_1.log.debug('Initializing management API client for logout', this.contextDetails);
const managementAPIClient = await (0, cli_utilities_1.managementSDKClient)({ host: this.cmaHost, skipTokenValidity: true });
cli_utilities_1.log.debug('Management API client initialized successfully', this.contextDetails);
utils_1.authHandler.client = managementAPIClient;
cli_utilities_1.log.debug('Auth handler client set for logout', this.contextDetails);
if (confirm === true && cli_utilities_1.authHandler.isAuthenticated()) {
cli_utilities_1.log.debug('User confirmed logout and is authenticated, proceeding with logout', this.contextDetails);
cli_utilities_1.cliux.loader('CLI_AUTH_LOGOUT_LOADER_START');
if (await cli_utilities_1.authHandler.isAuthorisationTypeBasic()) {
cli_utilities_1.log.debug('Using basic authentication for logout', this.contextDetails);
const authToken = cli_utilities_1.configHandler.get('authtoken');
cli_utilities_1.log.debug('Retrieved auth token for logout', Object.assign(Object.assign({}, this.contextDetails), { hasAuthToken: !!authToken }));
await utils_1.authHandler.logout(authToken);
cli_utilities_1.log.debug('Basic auth logout completed', this.contextDetails);
}
else if (await cli_utilities_1.authHandler.isAuthorisationTypeOAuth()) {
cli_utilities_1.log.debug('Using OAuth authentication for logout', this.contextDetails);
await cli_utilities_1.authHandler.oauthLogout();
cli_utilities_1.log.debug('OAuth logout completed', this.contextDetails);
}
cli_utilities_1.cliux.loader('');
cli_utilities_1.log.success(cli_utilities_1.messageHandler.parse('CLI_AUTH_LOGOUT_SUCCESS'), this.contextDetails);
cli_utilities_1.log.debug('Logout process completed successfully', this.contextDetails);
}
else {
cli_utilities_1.log.debug('User not confirmed or not authenticated, skipping logout', Object.assign(Object.assign({}, this.contextDetails), { confirm, isAuthenticated: cli_utilities_1.authHandler.isAuthenticated() }));
cli_utilities_1.log.success(cli_utilities_1.messageHandler.parse('CLI_AUTH_LOGOUT_ALREADY'), this.contextDetails);
}
}
catch (error) {
cli_utilities_1.log.debug('Logout command failed', Object.assign(Object.assign({}, this.contextDetails), { error: error.message }));
cli_utilities_1.cliux.print('CLI_AUTH_LOGOUT_FAILED', { color: 'yellow' });
(0, cli_utilities_1.handleAndLogError)(error, Object.assign({}, this.contextDetails));
}
finally {
if (confirm === true) {
cli_utilities_1.log.debug('Setting config data for logout', this.contextDetails);
await cli_utilities_1.authHandler.setConfigData('logout');
cli_utilities_1.log.debug('Config data set for logout', this.contextDetails);
}
}
}
}
exports.default = LogoutCommand;
LogoutCommand.description = 'User session logout';
LogoutCommand.examples = ['$ csdx auth:logout', '$ csdx auth:logout -y', '$ csdx auth:logout --yes'];
LogoutCommand.flags = {
yes: cli_utilities_1.flags.boolean({
char: 'y',
description: 'Force log out by skipping the confirmation.',
required: false,
default: false,
}),
force: cli_utilities_1.flags.boolean({
char: 'f',
description: 'Force log out by skipping the confirmation.',
required: false,
hidden: true,
default: false,
parse: (0, cli_utilities_1.printFlagDeprecation)(['-f', '--force'], ['-y', '--yes']),
}),
};
LogoutCommand.aliases = ['logout'];