Welcome to mirror list, hosted at ThFree Co, Russian Federation.

set-credentials-by-uri.js « config « lib - github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 31eab4479ede21c390e6b22bd352168ba2eef454 (plain)
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
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.")
  }
}