fix(scripts): suppress readline echo during password input in create-user
This commit is contained in:
@@ -34,6 +34,11 @@ const question = (prompt) => {
|
|||||||
const questionHidden = (prompt) => {
|
const questionHidden = (prompt) => {
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
process.stdout.write(prompt);
|
process.stdout.write(prompt);
|
||||||
|
|
||||||
|
// Suppress readline's own software echo so only '*' appears
|
||||||
|
const originalWrite = rl._writeToOutput;
|
||||||
|
rl._writeToOutput = () => {};
|
||||||
|
|
||||||
process.stdin.setRawMode(true);
|
process.stdin.setRawMode(true);
|
||||||
process.stdin.resume();
|
process.stdin.resume();
|
||||||
|
|
||||||
@@ -45,17 +50,18 @@ const questionHidden = (prompt) => {
|
|||||||
switch (char) {
|
switch (char) {
|
||||||
case '\n':
|
case '\n':
|
||||||
case '\r':
|
case '\r':
|
||||||
case '\u0004':
|
case '':
|
||||||
process.stdin.setRawMode(false);
|
process.stdin.setRawMode(false);
|
||||||
process.stdin.pause();
|
process.stdin.pause();
|
||||||
process.stdout.write('\n');
|
process.stdout.write('\n');
|
||||||
process.stdin.removeListener('data', dataListener);
|
process.stdin.removeListener('data', dataListener);
|
||||||
|
rl._writeToOutput = originalWrite;
|
||||||
resolve(password);
|
resolve(password);
|
||||||
break;
|
break;
|
||||||
case '\u0003':
|
case '':
|
||||||
process.exit();
|
process.exit();
|
||||||
break;
|
break;
|
||||||
case '\u007F':
|
case '':
|
||||||
case '\b':
|
case '\b':
|
||||||
password = password.slice(0, -1);
|
password = password.slice(0, -1);
|
||||||
process.stdout.write('\b \b');
|
process.stdout.write('\b \b');
|
||||||
|
|||||||
Reference in New Issue
Block a user