Improve create-user script: fix env path and add password masking

This commit is contained in:
2026-03-21 02:36:58 +01:00
parent 3c7d65a443
commit fce91fa465
+43 -3
View File
@@ -11,7 +11,7 @@ const { v4: uuidv4 } = require('uuid');
// Load environment // Load environment
const appEnv = process.env.APP_ENV || 'development'; 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'); 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 // Hash password
const hashPassword = (password) => { const hashPassword = (password) => {
const salt = crypto.randomBytes(16).toString('hex'); const salt = crypto.randomBytes(16).toString('hex');
@@ -49,8 +89,8 @@ const createUser = async () => {
const firstname = await question('Prénom (optionnel): '); const firstname = await question('Prénom (optionnel): ');
const lastname = await question('Nom (optionnel): '); const lastname = await question('Nom (optionnel): ');
const phone = await question('Téléphone (optionnel): '); const phone = await question('Téléphone (optionnel): ');
const password = await question('Mot de passe: '); const password = await questionHidden('Mot de passe: ');
const passwordConfirm = await question('Confirmer le mot de passe: '); const passwordConfirm = await questionHidden('Confirmer le mot de passe: ');
// Validation // Validation
if (!email || !username || !password) { if (!email || !username || !password) {