mirror of https://github.com/lukechilds/node.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.0 KiB
73 lines
2.0 KiB
var assert = require("assert")
|
|
|
|
var toNerfDart = require("./nerf-dart.js")
|
|
|
|
module.exports = getCredentialsByURI
|
|
|
|
function getCredentialsByURI (uri) {
|
|
assert(uri && typeof uri === "string", "registry URL is required")
|
|
var nerfed = toNerfDart(uri)
|
|
var defnerf = toNerfDart(this.get("registry"))
|
|
|
|
// hidden class micro-optimization
|
|
var c = {
|
|
scope : nerfed,
|
|
token : undefined,
|
|
password : undefined,
|
|
username : undefined,
|
|
email : undefined,
|
|
auth : undefined,
|
|
alwaysAuth : undefined
|
|
}
|
|
|
|
if (this.get(nerfed + ":_authToken")) {
|
|
c.token = this.get(nerfed + ":_authToken")
|
|
// the bearer token is enough, don't confuse things
|
|
return c
|
|
}
|
|
|
|
// Handle the old-style _auth=<base64> style for the default
|
|
// registry, if set.
|
|
//
|
|
// XXX(isaacs): Remove when npm 1.4 is no longer relevant
|
|
var authDef = this.get("_auth")
|
|
var userDef = this.get("username")
|
|
var passDef = this.get("_password")
|
|
if (authDef && !(userDef && passDef)) {
|
|
authDef = new Buffer(authDef, "base64").toString()
|
|
authDef = authDef.split(":")
|
|
userDef = authDef.shift()
|
|
passDef = authDef.join(":")
|
|
}
|
|
|
|
if (this.get(nerfed + ":_password")) {
|
|
c.password = new Buffer(this.get(nerfed + ":_password"), "base64").toString("utf8")
|
|
} else if (nerfed === defnerf && passDef) {
|
|
c.password = passDef
|
|
}
|
|
|
|
if (this.get(nerfed + ":username")) {
|
|
c.username = this.get(nerfed + ":username")
|
|
} else if (nerfed === defnerf && userDef) {
|
|
c.username = userDef
|
|
}
|
|
|
|
if (this.get(nerfed + ":email")) {
|
|
c.email = this.get(nerfed + ":email")
|
|
} else if (this.get("email")) {
|
|
c.email = this.get("email")
|
|
}
|
|
|
|
if (this.get(nerfed + ":always-auth") !== undefined) {
|
|
var val = this.get(nerfed + ":always-auth")
|
|
c.alwaysAuth = val === "false" ? false : !!val
|
|
} else if (this.get("always-auth") !== undefined) {
|
|
c.alwaysAuth = this.get("always-auth")
|
|
}
|
|
|
|
if (c.username && c.password) {
|
|
c.auth = new Buffer(c.username + ":" + c.password).toString("base64")
|
|
}
|
|
|
|
return c
|
|
}
|
|
|