motion
Version:
motion - moving development forward
86 lines (75 loc) • 2.75 kB
JavaScript
var request = require("request")
var localCreds = require("./util/creds.js")
var helpers = require("./util/helpers.js")
var os = require('os')
var url = require("url")
var parseUrl = require("url-parse-as-address")
module.exports = function(req, next, abort){
var count = 0
var label = " password:".grey
var auth = function(){
var out = req.config.output
if (out) out.isTTY = false
req.read({
prompt: label,
silent: true,
edit: false,
output: out,
input: req.config.input
}, function(err, password){
if (password === undefined) return abort("not authenticated.")
helpers.fetchToken(req.argv.endpoint || req.config.endpoint || 'surge.' + req.config.platform)(req.email, password, function(err, obj){
if (err) {
count++
if (err.hasOwnProperty("details") && err["details"].hasOwnProperty("email")) process.exit(1)
if (count >=3) {
req.read({
prompt: " forgot password?".grey,
default: "yes",
terminal: req.config.terminal,
output: req.config.output,
input: req.config.input
}, function(err, reply){
if (reply == "yes" || reply == "y" || reply == "Y") {
var options = {
'url': url.resolve(req.endpoint, "/token/reset/" + req.email),
'method': 'post'
}
request(options, function(e, r, obj){
if (e) throw e
if (r.statusCode == 201) {
console.log()
console.log(" Password Recovery".yellow, "- reset instructions sent to", req.email.green)
console.log()
process.exit(1)
} else {
console.log()
console.log(" Oops".red, "- something went wrong trying to reset your password.")
console.log()
process.exit(1)
}
})
} else {
console.log()
console.log(" Aborted".yellow, "- no password reset sent.", req.email.green)
console.log()
process.exit(1)
}
})
} else {
return auth()
}
} else {
req.creds = localCreds(req.argv.endpoint || req.config.endpoint || 'surge.' + req.config.platform).set(obj.email, obj.token)
return next()
}
})
})
}
if (req.authed) {
console.log(" token:".grey, "*****************".grey)
return next()
} else {
return auth()
}
}