UNPKG

@contentstack/cli-auth

Version:

Contentstack CLI plugin for authentication activities

86 lines (85 loc) 5.32 kB
"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'];