diff --git a/scripts/create-user.js b/scripts/create-user.js index bedcc47..c333061 100644 --- a/scripts/create-user.js +++ b/scripts/create-user.js @@ -11,7 +11,7 @@ const { v4: uuidv4 } = require('uuid'); // Load environment const appEnv = process.env.APP_ENV || 'development'; -require('dotenv').config({ path: `.env.${appEnv}` }); +require('dotenv').config({ path: `config/env/.env.${appEnv}` }); const sequelize = require('../src/database/config/sequelize'); @@ -30,6 +30,46 @@ const question = (prompt) => { }); }; +// Helper function for hidden password input +const questionHidden = (prompt) => { + return new Promise((resolve) => { + process.stdout.write(prompt); + process.stdin.setRawMode(true); + process.stdin.resume(); + + let password = ''; + + const dataListener = (char) => { + char = char.toString(); + + switch (char) { + case '\n': + case '\r': + case '\u0004': + process.stdin.setRawMode(false); + process.stdin.pause(); + process.stdout.write('\n'); + process.stdin.removeListener('data', dataListener); + resolve(password); + break; + case '\u0003': + process.exit(); + break; + case '\u007F': + case '\b': + password = password.slice(0, -1); + process.stdout.write('\b \b'); + break; + default: + password += char; + process.stdout.write('*'); + } + }; + + process.stdin.on('data', dataListener); + }); +}; + // Hash password const hashPassword = (password) => { const salt = crypto.randomBytes(16).toString('hex'); @@ -49,8 +89,8 @@ const createUser = async () => { const firstname = await question('Prénom (optionnel): '); const lastname = await question('Nom (optionnel): '); const phone = await question('Téléphone (optionnel): '); - const password = await question('Mot de passe: '); - const passwordConfirm = await question('Confirmer le mot de passe: '); + const password = await questionHidden('Mot de passe: '); + const passwordConfirm = await questionHidden('Confirmer le mot de passe: '); // Validation if (!email || !username || !password) {