Repository URL to install this package:
|
Version:
1.10.1 ▾
|
const inquirer = require('inquirer');
const chalk = require('chalk');
const ora = require('ora');
const { DOODLE_ENVS } = require('../constants');
const { CONFIG_PASSWORD_KEY, CONFIG_EMAIL_KEY } = require('../constants');
const { getTokenForUser } = require('../apis/keycloak');
const { obfuscateString } = require('../utils/strings');
const { getUserInfo } = require('../apis/doodle');
/**
* Log the user in and get a JWT Token from Keycloak
*
* @param {Object} options
* @param {Object} options.email
* @param {Object} options.password
* @param {Object} options.target
* @param {Object} options.print
* @param {Object} config
* @returns {Object}
*/
async function loginUser(options = {}, config) {
const obfuscatedPassword = obfuscateString(config[CONFIG_PASSWORD_KEY]);
await inquirer
.prompt([
{
type: 'list',
name: 'target',
message: 'Which environment are you logging into?',
choices: Object.keys(DOODLE_ENVS),
default: 'staging',
when: typeof options.target === 'undefined',
},
{
type: 'input',
name: 'email',
message: `Enter user's email`,
default: config[CONFIG_EMAIL_KEY],
when: typeof options.email === 'undefined',
},
{
type: 'password',
name: 'password',
message: `What is the user's account password? (leave blank for default: ${obfuscatedPassword})`,
default: config[CONFIG_PASSWORD_KEY],
when: typeof options.password === 'undefined',
},
])
.then(async answers => {
const { target, email, password } = {
...options,
...answers,
};
const spinner = ora('Fetching user info').start();
let keycloakData;
let userData;
try {
keycloakData = await getTokenForUser(target, email, password);
userData = await getUserInfo(target, keycloakData.access_token);
spinner.succeed('User into found');
console.log('\n', chalk.yellow('Keycloak Info'));
console.log('\n', keycloakData, '\n');
console.log(chalk.yellow('Doodle User Info'));
console.log('\n', JSON.stringify(userData, null, 2), '\n');
} catch (err) {
spinner.fail('Could not fetch user info');
console.error(err);
}
return { target, keycloakData, userData };
});
}
module.exports = loginUser;