Improve create-user script: fix env path and add password masking
This commit is contained in:
+43
-3
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user