GIF89; GIF89; %PDF- %PDF-
__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
const { webAuthOpener, adduserWeb, loginWeb, loginCouch, adduserCouch } = require('npm-profile')
const { log } = require('proc-log')
const { createOpener } = require('../utils/open-url.js')
const read = require('../utils/read-user-info.js')
const otplease = async (npm, opts, fn) => {
try {
return await fn(opts)
} catch (err) {
if (!process.stdin.isTTY || !process.stdout.isTTY) {
throw err
}
// web otp
if (err.code === 'EOTP' && err.body?.authUrl && err.body?.doneUrl) {
const { token: otp } = await webAuthOpener(
createOpener(npm, 'Authenticate your account at'),
err.body.authUrl,
err.body.doneUrl,
opts
)
return await fn({ ...opts, otp })
}
// classic otp
if (err.code === 'EOTP' || (err.code === 'E401' && /one-time pass/.test(err.body))) {
const otp = await read.otp('This operation requires a one-time password.\nEnter OTP:')
return await fn({ ...opts, otp })
}
throw err
}
}
const adduser = async (npm, { creds, ...opts }) => {
const authType = npm.config.get('auth-type')
let res
if (authType === 'web') {
try {
res = await adduserWeb(createOpener(npm, 'Create your account at'), opts)
} catch (err) {
if (err.code === 'ENYI') {
log.verbose('web add user not supported, trying couch')
} else {
throw err
}
}
}
// auth type !== web or ENYI error w/ web adduser
if (!res) {
const username = await read.username('Username:', creds.username)
const password = await read.password('Password:', creds.password)
const email = await read.email('Email: (this IS public) ', creds.email)
// npm registry quirk: If you "add" an existing user with their current
// password, it's effectively a login, and if that account has otp you'll
// be prompted for it.
res = await otplease(npm, opts, (reqOpts) => adduserCouch(username, email, password, reqOpts))
}
// We don't know the username if it was a web login, all we can reliably log is scope and registry
const message = `Logged in${opts.scope ? ` to scope ${opts.scope}` : ''} on ${opts.registry}.`
log.info('adduser', message)
return {
message,
newCreds: { token: res.token },
}
}
const login = async (npm, { creds, ...opts }) => {
const authType = npm.config.get('auth-type')
let res
if (authType === 'web') {
try {
res = await loginWeb(createOpener(npm, 'Login at'), opts)
} catch (err) {
if (err.code === 'ENYI') {
log.verbose('web login not supported, trying couch')
} else {
throw err
}
}
}
// auth type !== web or ENYI error w/ web login
if (!res) {
const username = await read.username('Username:', creds.username)
const password = await read.password('Password:', creds.password)
res = await otplease(npm, opts, (reqOpts) => loginCouch(username, password, reqOpts))
}
// We don't know the username if it was a web login, all we can reliably log is scope and registry
const message = `Logged in${opts.scope ? ` to scope ${opts.scope}` : ''} on ${opts.registry}.`
log.info('login', message)
return {
message,
newCreds: { token: res.token },
}
}
module.exports = {
adduser,
login,
otplease,
}
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| audit-error.js | File | 1.02 KB | 0644 |
|
| auth.js | File | 3.21 KB | 0644 |
|
| cmd-list.js | File | 2.89 KB | 0644 |
|
| completion.fish | File | 1.56 KB | 0644 |
|
| completion.sh | File | 1.85 KB | 0755 |
|
| did-you-mean.js | File | 1.16 KB | 0644 |
|
| display.js | File | 15.38 KB | 0644 |
|
| error-message.js | File | 14.79 KB | 0644 |
|
| explain-dep.js | File | 3.03 KB | 0644 |
|
| explain-eresolve.js | File | 2.56 KB | 0644 |
|
| format-bytes.js | File | 629 B | 0644 |
|
| format-search-stream.js | File | 4.7 KB | 0644 |
|
| format.js | File | 1.91 KB | 0644 |
|
| get-identity.js | File | 802 B | 0644 |
|
| get-workspaces.js | File | 1.71 KB | 0644 |
|
| installed-deep.js | File | 1.1 KB | 0644 |
|
| installed-shallow.js | File | 583 B | 0644 |
|
| is-windows.js | File | 177 B | 0644 |
|
| log-file.js | File | 7.78 KB | 0644 |
|
| npm-usage.js | File | 2.02 KB | 0644 |
|
| open-url.js | File | 2.36 KB | 0644 |
|
| output-error.js | File | 767 B | 0644 |
|
| ping.js | File | 262 B | 0644 |
|
| queryable.js | File | 9.56 KB | 0644 |
|
| read-user-info.js | File | 1.91 KB | 0644 |
|
| reify-finish.js | File | 886 B | 0644 |
|
| reify-output.js | File | 5.65 KB | 0644 |
|
| sbom-cyclonedx.js | File | 5.21 KB | 0644 |
|
| sbom-spdx.js | File | 4.59 KB | 0644 |
|
| tar.js | File | 3.47 KB | 0644 |
|
| timers.js | File | 2.07 KB | 0644 |
|
| update-workspaces.js | File | 1013 B | 0644 |
|
| validate-lockfile.js | File | 1023 B | 0644 |
|
| verify-signatures.js | File | 11.94 KB | 0644 |
|