/
login.js
91 lines (60 loc) · 1.77 KB
/
login.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
module.exports = {
friendlyName: 'Login',
description: 'Logs in by authenticating against a controller.',
extendedDescription: '',
inputs: {
controller: {
description: 'The controller location of your Deis install.',
example: 'http://deis.mydeisapp.com',
required: true
},
username: {
description: 'The username to use for login',
example: 'foobar',
required: true
},
password: {
description: 'The password to use for login',
example: 'deisrocks',
required: true
},
sslVerify: {
description: 'disables SSL certificate verification for API requests',
defaultsTo: false,
example: true
}
},
defaultExit: 'success',
exits: {
error: {
description: 'Unexpected error occurred.',
},
notAuthenticated: {
description: 'The credentials provided were invalid'
},
success: {
description: 'Returns an access token that can be used to access the Deis api',
example: 'f128sh6736dna97ehsh83ejcess3r434'
},
},
fn: function (inputs,exits) {
// Dependencies
var request = require('request');
var url = inputs.controller + '/v1/auth/login/';
var body = {
username: inputs.username,
password: inputs.password,
sslVerify: inputs.sslVerify || false
};
// Make the HTTP request
request.post({ url: url, form: body, json: true }, function(err, response, body) {
if(err) return exits.error(err);
var code = response.statusCode;
if(!code) return exits.error(new Error('Missing status code'));
if(code > 299) return exits.notAuthenticated();
var token = body.token;
if(!token) return exits.notAuthenticated();
return exits.success(token);
});
}
};