Skip to content

Commit

Permalink
fix(login): properly save scope if defined
Browse files Browse the repository at this point in the history
setCredentialsByURI was clobbering the saving of the scope:registry
config
  • Loading branch information
wraithgar committed Jun 7, 2021
1 parent a49b8d7 commit fc08e55
Show file tree
Hide file tree
Showing 2 changed files with 88 additions and 3 deletions.
87 changes: 87 additions & 0 deletions adduser.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
const log = require('npmlog')
const replaceInfo = require('./utils/replace-info.js')
const BaseCommand = require('./base-command.js')
const authTypes = {
legacy: require('./auth/legacy.js'),
oauth: require('./auth/oauth.js'),
saml: require('./auth/saml.js'),
sso: require('./auth/sso.js'),
}

class AddUser extends BaseCommand {
static get description () {
return 'Add a registry user account'
}

static get name () {
return 'adduser'
}

static get params () {
return [
'registry',
'scope',
]
}

exec (args, cb) {
this.adduser(args).then(() => cb()).catch(cb)
}

async adduser (args) {
const scope = this.npm.config.get('scope')
console.log(scope)
const registry = this.getRegistry(this.npm.flatOptions)
const auth = this.getAuthType(this.npm.flatOptions)
const creds = this.npm.config.getCredentialsByURI(registry)

log.disableProgress()

log.notice('', `Log in on ${replaceInfo(registry)}`)

const { message, newCreds } = await auth(this.npm, {
...this.npm.flatOptions,
creds,
registry,
scope,
})

await this.updateConfig({
newCreds,
registry,
scope,
})

this.npm.output(message)
}

getRegistry ({ scope, registry }) {
if (scope) {
const scopedRegistry = this.npm.config.get(`${scope}:registry`)
const cliRegistry = this.npm.config.get('registry', 'cli')
if (scopedRegistry && !cliRegistry)
return scopedRegistry
}
return registry
}

getAuthType ({ authType }) {
const type = authTypes[authType]

if (!type)
throw new Error('no such auth module')

return type
}

async updateConfig ({ newCreds, registry, scope }) {
this.npm.config.delete('_token', 'user') // prevent legacy pollution

this.npm.config.setCredentialsByURI(registry, newCreds)

if (scope)
this.npm.config.set(scope + ':registry', registry, 'user')
await this.npm.config.save('user')
}
}
module.exports = AddUser
4 changes: 1 addition & 3 deletions lib/adduser.js
Original file line number Diff line number Diff line change
Expand Up @@ -75,11 +75,9 @@ class AddUser extends BaseCommand {

async updateConfig ({ newCreds, registry, scope }) {
this.npm.config.delete('_token', 'user') // prevent legacy pollution

this.npm.config.setCredentialsByURI(registry, newCreds)
if (scope)
this.npm.config.set(scope + ':registry', registry, 'user')

this.npm.config.setCredentialsByURI(registry, newCreds)
await this.npm.config.save('user')
}
}
Expand Down

0 comments on commit fc08e55

Please sign in to comment.