1 | const inquirer = require('inquirer')
|
2 | const logger = require('../logger')
|
3 | const DcHttpClient = require('../DcHttpClient')
|
4 | const UserSettings = require('../user/UserSettings')
|
5 |
|
6 | class LoginAction {
|
7 | |
8 |
|
9 |
|
10 | static register (caporal) {
|
11 | caporal
|
12 | .command('login')
|
13 | .description('Login')
|
14 | .option('--username [email]', 'Email address to login')
|
15 | .option('--password [password]', 'Password to login')
|
16 | .action((args, options) => new LoginAction().run(options, (err) => {
|
17 | if (err) return logger.error(err.message)
|
18 | logger.info('Login successful')
|
19 | }))
|
20 | }
|
21 |
|
22 | |
23 |
|
24 |
|
25 |
|
26 | run (options, cb) {
|
27 | this.options = options
|
28 |
|
29 | this.getUsernameAndPassword((err, username, password) => {
|
30 | if (err) return cb(err)
|
31 | new DcHttpClient(new UserSettings()).login(username, password, (err) => {
|
32 | if (err) return cb(err)
|
33 | cb()
|
34 | })
|
35 | })
|
36 | }
|
37 |
|
38 | |
39 |
|
40 |
|
41 | getUsernameAndPassword (cb) {
|
42 | let username = this.options.username || process.env.SGCLOUD_USER
|
43 | let password = this.options.password || process.env.SGCLOUD_PASS
|
44 |
|
45 | const inquirerPrompt = []
|
46 | if (!username) inquirerPrompt.push({type: 'input', name: 'username', message: 'Enter your email address:'})
|
47 | if (!password) inquirerPrompt.push({type: 'password', name: 'password', message: 'Enter your password:'})
|
48 |
|
49 | if (inquirerPrompt.length) {
|
50 | return inquirer.prompt(inquirerPrompt).then(answers => {
|
51 | cb(null, answers.username || username, answers.password || password)
|
52 | })
|
53 | }
|
54 |
|
55 | cb(null, username, password)
|
56 | }
|
57 | }
|
58 |
|
59 | module.exports = LoginAction
|