diff options
Diffstat (limited to 'deps/npm/lib/adduser.js')
-rw-r--r-- | deps/npm/lib/adduser.js | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/deps/npm/lib/adduser.js b/deps/npm/lib/adduser.js index c3ba5fc32..94a119683 100644 --- a/deps/npm/lib/adduser.js +++ b/deps/npm/lib/adduser.js @@ -18,9 +18,9 @@ function adduser (args, cb) { if (!crypto) return cb(new Error( "You must compile node with ssl support to use the adduser feature")) - var c = { u : npm.config.get("username") - , p : npm.config.get("_password") - , e : npm.config.get("email") + var c = { u : npm.config.get("username") || "" + , p : npm.config.get("_password") || "" + , e : npm.config.get("email") || "" } , changed = false , u = {} @@ -37,7 +37,7 @@ function adduser (args, cb) { function readUsername (c, u, cb) { var v = userValidate.username - read({prompt: "Username: ", default: c.u}, function (er, un) { + read({prompt: "Username: ", default: c.u || ""}, function (er, un) { if (er) { return cb(er.message === "cancelled" ? er.message : er) } @@ -66,15 +66,24 @@ function readUsername (c, u, cb) { function readPassword (c, u, cb) { var v = userValidate.pw - if (!c.changed) { - u.p = c.p - return cb() + var prompt + if (c.p && !c.changed) { + prompt = "Password: (or leave unchanged) " + } else { + prompt = "Password: " } - read({prompt: "Password: ", silent: true}, function (er, pw) { + + read({prompt: prompt, silent: true}, function (er, pw) { if (er) { return cb(er.message === "cancelled" ? er.message : er) } + if (!c.changed && pw === "") { + // when the username was not changed, + // empty response means "use the old value" + pw = c.p + } + if (!pw) { return readPassword(c, u, cb) } @@ -85,6 +94,7 @@ function readPassword (c, u, cb) { return readPassword(c, u, cb) } + c.changed = c.changed || c.p != pw u.p = pw cb(er) }) @@ -92,8 +102,8 @@ function readPassword (c, u, cb) { function readEmail (c, u, cb) { var v = userValidate.email - - read({prompt: "Email: ", default: c.e}, function (er, em) { + var r = { prompt: "Email: (this IS public) ", default: c.e || "" } + read(r, function (er, em) { if (er) { return cb(er.message === "cancelled" ? er.message : er) } @@ -131,6 +141,7 @@ function save (c, u, cb) { npm.config.set("username", u.u, "user") npm.config.set("_password", u.p, "user") npm.config.set("email", u.e, "user") + npm.config.del("_token", "user") log.info("adduser", "Authorized user %s", u.u) npm.config.save("user", cb) }) |