UNPKG

polyglot-cli

Version:
53 lines (45 loc) 1.38 kB
const fs = require('fs'); const prompt = require('prompt'); const colors = require('colors/safe'); const config = require('../common/config'); const utils = require('../common/utils'); const network = require('../common/network'); const schema = { properties: { email: { description: colors.prompt('E-mail'), format: 'email', required: true }, password: { description: colors.prompt('Password'), required: true, hidden: true, replace: '*' } } }; function login(fileSystem, user) { const data = { version: config.version, token: user.token, name: user.name, loggedIn: (new Date()).toISOString() }; fileSystem.writeFileSync(config.authFile, JSON.stringify(data, null, 2), 'utf-8'); config.auth = data; utils.info('You\'re logged in!'); return data.token; } module.exports = function(program, opts, fileSystem = fs) { if (config.auth) { return utils.error(`You're already logged in as ${config.auth.email}!`).catch(() => config.auth.token); } utils.info('Please enter your login info:'); prompt.message = ''; prompt.start(opts); return utils.prompt(prompt, schema) .then((result) => network.create('/sessions', network.serialize(result, 'sessions'))) .then((data) => login(fileSystem, data)) .catch((e) => utils.error(`Something went wrong: ${e}`)); };