Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@doodle/lib-node-utilities / bin / add-user-prompt.js
Size: Mime:
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;