Do not let admin put password on cli argument when reseting password
authorChocobozzz <florian.bigard@gmail.com>
Mon, 23 Jan 2017 21:50:29 +0000 (22:50 +0100)
committerChocobozzz <florian.bigard@gmail.com>
Mon, 23 Jan 2017 21:50:29 +0000 (22:50 +0100)
scripts/reset-password.js

index 6a00b37eb0bd3881a57cbdc35be9b5b913847354..5ae3af9ea93be524869f52a2dbe958625d5a1ee9 100755 (executable)
@@ -10,10 +10,9 @@ const db = require('../server/initializers/database')
 
 program
   .option('-u, --user [user]', 'User')
-  .option('-p, --password [new password]', 'New password')
   .parse(process.argv)
 
-if (program.user === undefined || program.password === undefined) {
+if (program.user === undefined) {
   console.error('All parameters are mandatory.')
   process.exit(-1)
 }
@@ -30,15 +29,32 @@ db.init(true, function () {
       return
     }
 
-    user.password = program.password
-    user.save().asCallback(function (err) {
-      if (err) {
-        console.error(err)
-        return
+    const readline = require('readline')
+    const Writable = require('stream').Writable
+    const mutableStdout = new Writable({
+      write: function (chunk, encoding, callback) {
+        callback()
       }
+    })
+    const rl = readline.createInterface({
+      input: process.stdin,
+      output: mutableStdout,
+      terminal: true
+    })
+
+    console.log('New password?')
+    rl.on('line', function (password) {
+      user.password = password
+
+      user.save().asCallback(function (err) {
+        if (err) {
+          console.error(err)
+        } else {
+          console.log('User password updated.')
+        }
 
-      console.log('User pasword updated.')
-      process.exit(0)
+        process.exit(0)
+      })
     })
   })
 })