summaryrefslogtreecommitdiff
path: root/deps/npm/lib/utils/otplease.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/lib/utils/otplease.js')
-rw-r--r--deps/npm/lib/utils/otplease.js27
1 files changed, 27 insertions, 0 deletions
diff --git a/deps/npm/lib/utils/otplease.js b/deps/npm/lib/utils/otplease.js
new file mode 100644
index 0000000000..d0477a896d
--- /dev/null
+++ b/deps/npm/lib/utils/otplease.js
@@ -0,0 +1,27 @@
+'use strict'
+
+const BB = require('bluebird')
+
+const optCheck = require('figgy-pudding')({
+ prompt: {default: 'This operation requires a one-time password.\nEnter OTP:'},
+ otp: {}
+})
+const readUserInfo = require('./read-user-info.js')
+
+module.exports = otplease
+function otplease (opts, fn) {
+ opts = opts.concat ? opts : optCheck(opts)
+ return BB.try(() => {
+ return fn(opts)
+ }).catch(err => {
+ if (err.code !== 'EOTP' && !(err.code === 'E401' && /one-time pass/.test(err.body))) {
+ throw err
+ } else if (!process.stdin.isTTY || !process.stdout.isTTY) {
+ throw err
+ } else {
+ return readUserInfo.otp(
+ optCheck(opts).prompt
+ ).then(otp => fn(opts.concat({otp})))
+ }
+ })
+}