mirror of https://github.com/nodejs/node.git
43 lines
1.3 KiB
JavaScript
43 lines
1.3 KiB
JavaScript
var assert = require("assert")
|
|
|
|
var toNerfDart = require("./nerf-dart.js")
|
|
|
|
module.exports = setCredentialsByURI
|
|
|
|
function setCredentialsByURI (uri, c) {
|
|
assert(uri && typeof uri === "string", "registry URL is required")
|
|
assert(c && typeof c === "object", "credentials are required")
|
|
|
|
var nerfed = toNerfDart(uri)
|
|
|
|
if (c.token) {
|
|
this.set(nerfed + ":_authToken", c.token, "user")
|
|
this.del(nerfed + ":_password", "user")
|
|
this.del(nerfed + ":username", "user")
|
|
this.del(nerfed + ":email", "user")
|
|
this.del(nerfed + ":always-auth", "user")
|
|
}
|
|
else if (c.username || c.password || c.email) {
|
|
assert(c.username, "must include username")
|
|
assert(c.password, "must include password")
|
|
assert(c.email, "must include email address")
|
|
|
|
this.del(nerfed + ":_authToken", "user")
|
|
|
|
var encoded = new Buffer(c.password, "utf8").toString("base64")
|
|
this.set(nerfed + ":_password", encoded, "user")
|
|
this.set(nerfed + ":username", c.username, "user")
|
|
this.set(nerfed + ":email", c.email, "user")
|
|
|
|
if (c.alwaysAuth !== undefined) {
|
|
this.set(nerfed + ":always-auth", c.alwaysAuth, "user")
|
|
}
|
|
else {
|
|
this.del(nerfed + ":always-auth", "user")
|
|
}
|
|
}
|
|
else {
|
|
throw new Error("No credentials to set.")
|
|
}
|
|
}
|