diff options
Diffstat (limited to 'deps/node/deps/npm/lib/auth')
-rw-r--r-- | deps/node/deps/npm/lib/auth/legacy.js | 79 | ||||
-rw-r--r-- | deps/node/deps/npm/lib/auth/oauth.js | 7 | ||||
-rw-r--r-- | deps/node/deps/npm/lib/auth/saml.js | 7 | ||||
-rw-r--r-- | deps/node/deps/npm/lib/auth/sso.js | 73 |
4 files changed, 0 insertions, 166 deletions
diff --git a/deps/node/deps/npm/lib/auth/legacy.js b/deps/node/deps/npm/lib/auth/legacy.js deleted file mode 100644 index 7ad678be..00000000 --- a/deps/node/deps/npm/lib/auth/legacy.js +++ /dev/null @@ -1,79 +0,0 @@ -'use strict' - -const read = require('../utils/read-user-info.js') -const profile = require('libnpm/profile') -const log = require('npmlog') -const figgyPudding = require('figgy-pudding') -const npmConfig = require('../config/figgy-config.js') -const output = require('../utils/output.js') -const openUrl = require('../utils/open-url') - -const openerPromise = (url) => new Promise((resolve, reject) => { - openUrl(url, 'to complete your login please visit', (er) => er ? reject(er) : resolve()) -}) - -const loginPrompter = (creds) => { - const opts = { log: log } - return read.username('Username:', creds.username, opts).then((u) => { - creds.username = u - return read.password('Password:', creds.password) - }).then((p) => { - creds.password = p - return read.email('Email: (this IS public) ', creds.email, opts) - }).then((e) => { - creds.email = e - return creds - }) -} - -const LoginOpts = figgyPudding({ - 'always-auth': {}, - creds: {}, - log: {default: () => log}, - registry: {}, - scope: {} -}) - -module.exports.login = (creds = {}, registry, scope, cb) => { - const opts = LoginOpts(npmConfig()).concat({scope, registry, creds}) - login(opts).then((newCreds) => cb(null, newCreds)).catch(cb) -} - -function login (opts) { - return profile.login(openerPromise, loginPrompter, opts) - .catch((err) => { - if (err.code === 'EOTP') throw err - const u = opts.creds.username - const p = opts.creds.password - const e = opts.creds.email - if (!(u && p && e)) throw err - return profile.adduserCouch(u, e, p, opts) - }) - .catch((err) => { - if (err.code !== 'EOTP') throw err - return read.otp( - 'Enter one-time password from your authenticator app: ' - ).then(otp => { - const u = opts.creds.username - const p = opts.creds.password - return profile.loginCouch(u, p, opts.concat({otp})) - }) - }).then((result) => { - const newCreds = {} - if (result && result.token) { - newCreds.token = result.token - } else { - newCreds.username = opts.creds.username - newCreds.password = opts.creds.password - newCreds.email = opts.creds.email - newCreds.alwaysAuth = opts['always-auth'] - } - - const usermsg = opts.creds.username ? ' user ' + opts.creds.username : '' - opts.log.info('login', 'Authorized' + usermsg) - const scopeMessage = opts.scope ? ' to scope ' + opts.scope : '' - const userout = opts.creds.username ? ' as ' + opts.creds.username : '' - output('Logged in%s%s on %s.', userout, scopeMessage, opts.registry) - return newCreds - }) -} diff --git a/deps/node/deps/npm/lib/auth/oauth.js b/deps/node/deps/npm/lib/auth/oauth.js deleted file mode 100644 index 1cb3ffec..00000000 --- a/deps/node/deps/npm/lib/auth/oauth.js +++ /dev/null @@ -1,7 +0,0 @@ -var ssoAuth = require('./sso') -var npm = require('../npm') - -module.exports.login = function login () { - npm.config.set('sso-type', 'oauth') - ssoAuth.login.apply(this, arguments) -} diff --git a/deps/node/deps/npm/lib/auth/saml.js b/deps/node/deps/npm/lib/auth/saml.js deleted file mode 100644 index ae92ea5b..00000000 --- a/deps/node/deps/npm/lib/auth/saml.js +++ /dev/null @@ -1,7 +0,0 @@ -var ssoAuth = require('./sso') -var npm = require('../npm') - -module.exports.login = function login () { - npm.config.set('sso-type', 'saml') - ssoAuth.login.apply(this, arguments) -} diff --git a/deps/node/deps/npm/lib/auth/sso.js b/deps/node/deps/npm/lib/auth/sso.js deleted file mode 100644 index 099e764e..00000000 --- a/deps/node/deps/npm/lib/auth/sso.js +++ /dev/null @@ -1,73 +0,0 @@ -'use strict' - -const BB = require('bluebird') - -const figgyPudding = require('figgy-pudding') -const log = require('npmlog') -const npmConfig = require('../config/figgy-config.js') -const npmFetch = require('npm-registry-fetch') -const output = require('../utils/output.js') -const openUrl = BB.promisify(require('../utils/open-url.js')) -const otplease = require('../utils/otplease.js') -const profile = require('libnpm/profile') - -const SsoOpts = figgyPudding({ - ssoType: 'sso-type', - 'sso-type': {}, - ssoPollFrequency: 'sso-poll-frequency', - 'sso-poll-frequency': {} -}) - -module.exports.login = function login (creds, registry, scope, cb) { - const opts = SsoOpts(npmConfig()).concat({creds, registry, scope}) - const ssoType = opts.ssoType - if (!ssoType) { return cb(new Error('Missing option: sso-type')) } - - // We're reusing the legacy login endpoint, so we need some dummy - // stuff here to pass validation. They're never used. - const auth = { - username: 'npm_' + ssoType + '_auth_dummy_user', - password: 'placeholder', - email: 'support@npmjs.com', - authType: ssoType - } - - otplease(opts, - opts => profile.loginCouch(auth.username, auth.password, opts) - ).then(({token, sso}) => { - if (!token) { throw new Error('no SSO token returned') } - if (!sso) { throw new Error('no SSO URL returned by services') } - return openUrl(sso, 'to complete your login please visit').then(() => { - return pollForSession(registry, token, opts) - }).then(username => { - log.info('adduser', 'Authorized user %s', username) - var scopeMessage = scope ? ' to scope ' + scope : '' - output('Logged in as %s%s on %s.', username, scopeMessage, registry) - return {token} - }) - }).nodeify(cb) -} - -function pollForSession (registry, token, opts) { - log.info('adduser', 'Polling for validated SSO session') - return npmFetch.json( - '/-/whoami', opts.concat({registry, forceAuth: {token}}) - ).then( - ({username}) => username, - err => { - if (err.code === 'E401') { - return sleep(opts['sso-poll-frequency']).then(() => { - return pollForSession(registry, token, opts) - }) - } else { - throw err - } - } - ) -} - -function sleep (time) { - return new BB((resolve) => { - setTimeout(resolve, time) - }) -} |