• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1var assert = require('assert')
2
3var toNerfDart = require('./nerf-dart.js')
4
5module.exports = setCredentialsByURI
6
7function setCredentialsByURI (uri, c) {
8  assert(uri && typeof uri === 'string', 'registry URL is required')
9  assert(c && typeof c === 'object', 'credentials are required')
10
11  var nerfed = toNerfDart(uri)
12
13  if (c.token) {
14    this.set(nerfed + ':_authToken', c.token, 'user')
15    this.del(nerfed + ':_password', 'user')
16    this.del(nerfed + ':username', 'user')
17    this.del(nerfed + ':email', 'user')
18    this.del(nerfed + ':always-auth', 'user')
19  } else if (c.username || c.password || c.email) {
20    assert(c.username, 'must include username')
21    assert(c.password, 'must include password')
22    assert(c.email, 'must include email address')
23
24    this.del(nerfed + ':_authToken', 'user')
25
26    var encoded = Buffer.from(c.password, 'utf8').toString('base64')
27    this.set(nerfed + ':_password', encoded, 'user')
28    this.set(nerfed + ':username', c.username, 'user')
29    this.set(nerfed + ':email', c.email, 'user')
30
31    if (c.alwaysAuth !== undefined) {
32      this.set(nerfed + ':always-auth', c.alwaysAuth, 'user')
33    } else {
34      this.del(nerfed + ':always-auth', 'user')
35    }
36  } else {
37    throw new Error('No credentials to set.')
38  }
39}
40