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
|
// 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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user