From d82dc0578c8842c9efe2cf582b8139c58ecd3339 Mon Sep 17 00:00:00 2001 From: Julien Gautier Date: Mon, 27 Apr 2026 01:17:39 +0200 Subject: [PATCH] fix(scripts): suppress readline echo during password input in create-user --- scripts/create-user.js | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/scripts/create-user.js b/scripts/create-user.js index 6a2090e..c3bc426 100644 --- a/scripts/create-user.js +++ b/scripts/create-user.js @@ -34,28 +34,34 @@ const question = (prompt) => { const questionHidden = (prompt) => { return new Promise((resolve) => { 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.resume(); - + let password = ''; - + const dataListener = (char) => { char = char.toString(); - + switch (char) { case '\n': case '\r': - case '\u0004': + case '': process.stdin.setRawMode(false); process.stdin.pause(); process.stdout.write('\n'); process.stdin.removeListener('data', dataListener); + rl._writeToOutput = originalWrite; resolve(password); break; - case '\u0003': + case '': process.exit(); break; - case '\u007F': + case '': case '\b': password = password.slice(0, -1); process.stdout.write('\b \b'); @@ -65,7 +71,7 @@ const questionHidden = (prompt) => { process.stdout.write('*'); } }; - + process.stdin.on('data', dataListener); }); };