-
Notifications
You must be signed in to change notification settings - Fork 17
Expand file tree
/
Copy pathauth.js
More file actions
61 lines (59 loc) · 2.58 KB
/
Copy pathauth.js
File metadata and controls
61 lines (59 loc) · 2.58 KB
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
const helpers = require('../lib/helpers')
const Paystack = require('../lib/Paystack')
const init = function () {
vorpal.command('login', 'Sign in with your Paystack username and password').action(async function (args, callback) {
let token = ''
let expiry = parseInt(db.read('token_expiry')) * 1000;
let now = parseFloat(Date.now().toString())
let user;
if (expiry > now) {
token = db.read('token');
user = db.read('user');
helpers.successLog("You're already logged in")
}
else {
var email = helpers.prompt('Email address\n')
let password = helpers.prompt('Password\n', true)
var [e, response] = await helpers.promiseWrapper(Paystack.signIn(email, password))
if (response && !response.mfa_required) {
token = response.token;
user = response.user;
db.write('token', token)
db.write('user', user)
helpers.successLog('Login successful')
} else if (response && response.mfa_required) {
var totp = helpers.prompt('*MFA required* Enter 6-digit verification code\n')
var [e, response] = await helpers.promiseWrapper(Paystack.verifyMfa(totp, response.token))
if (response) {
token = response.token
user = response.user
db.write('token', token)
db.write('user', user)
helpers.successLog('Login successful')
}
} else{
helpers.errorLog('Login failed')
return;
}
}
if (response || (token && user)) {
var [err, integration] = await helpers.promiseWrapper(Paystack.selectIntegration(user.integrations, token))
if (err) {
helpers.errorLog(err);
}
db.write('selected_integration', integration);
let user_role = db.read('selected_integration.logged_in_user_role');
var [err, integrationData] = await helpers.promiseWrapper(Paystack.getIntegration(integration.id, token));
if (err) {
helpers.errorLog(err);
return
}
integrationData.logged_in_user_role = user_role;
db.write('selected_integration', integrationData);
helpers.infoLog('Logged in as ' + user.email + ' - ' + integration.business_name + ' (' + integration.id + ')');
} else {
helpers.errorLog(' - - - - - - ')
}
})
}
module.exports = init