Repository URL to install this package:
|
Version:
0.0.1 ▾
|
const open = require('open');
const revhash = require('rev-hash');
const inquirer = require('inquirer');
const ora = require('ora');
const chalk = require('chalk');
const { authorize, getActivationEmailLinkFromHash, getUniqueEmail } = require('../apis/gmail-authorize');
const { requestNewUserAccount } = require('../apis/doodle');
const { DOODLE_ENVS, CONFIG_EMAIL_KEY } = require('./constants');
function createNewUser(config) {
authorize().then(async () => {
inquirer
.prompt([
{
type: 'list',
name: 'target',
message: 'Which environment should this user be created?',
choices: Object.keys(DOODLE_ENVS),
default: 'staging',
},
])
.then(async answers => {
const { target } = answers;
const url = DOODLE_ENVS[target];
const hash = revhash(new Date().toUTCString());
const username = getUniqueEmail(hash, config[CONFIG_EMAIL_KEY]);
let spinner = ora(`Creating user: ${chalk.yellow(username)}`).start();
// Actually send the request to make the new user account
await requestNewUserAccount(url, hash, config)
.then(response => {
if (response.ok) {
return response.json();
}
throw new Error('Network request failed.');
})
.then(async () => {
spinner.succeed();
spinner = ora(`Fetching activation link ${chalk.gray(hash)}`).start();
try {
const activationLink = await getActivationEmailLinkFromHash(hash);
spinner.succeed('Activation link found.');
console.log(`${chalk.yellow('Opening activation link in browser')}\n${activationLink}`);
open(activationLink);
} catch (error) {
spinner.fail(`Failed to fetch activation link: ${error.message}`);
}
})
.catch(error => {
spinner.fail('Could not create user');
console.log(error.message);
});
});
});
}
module.exports = createNewUser;