Files
sena_db_api_layer/scripts/create-test-user.js
2026-01-19 09:33:35 +07:00

112 lines
3.6 KiB
JavaScript

const { UsersAuth, UserProfile } = require('../models');
const { initializeDatabase } = require('../config/database');
const { setupRelationships } = require('../models');
const bcrypt = require('bcrypt');
const crypto = require('crypto');
/**
* Script tạo user test để thử nghiệm login
*/
async function createTestUser() {
try {
console.log('🚀 Bắt đầu tạo user test...\n');
// Khởi tạo database
await initializeDatabase();
setupRelationships();
// Test credentials
const testUsers = [
{
username: 'admin',
email: 'admin@senaai.tech',
password: 'admin123',
full_name: 'Administrator',
phone: '0900000001',
},
{
username: 'teacher1',
email: 'teacher1@senaai.tech',
password: 'teacher123',
full_name: 'Giáo viên Test',
phone: '0900000002',
},
{
username: 'student1',
email: 'student1@senaai.tech',
password: 'student123',
full_name: 'Học sinh Test',
phone: '0900000003',
},
];
for (const userData of testUsers) {
console.log(`📝 Đang tạo user: ${userData.username}...`);
// Kiểm tra user đã tồn tại chưa
const existingUser = await UsersAuth.findOne({
where: {
[require('sequelize').Op.or]: [
{ username: userData.username },
{ email: userData.email },
],
},
});
if (existingUser) {
console.log(` ⚠️ User ${userData.username} đã tồn tại, bỏ qua.\n`);
continue;
}
// Hash password
const salt = crypto.randomBytes(16).toString('hex');
const passwordHash = await bcrypt.hash(userData.password + salt, 10);
// Tạo user
const newUser = await UsersAuth.create({
username: userData.username,
email: userData.email,
password_hash: passwordHash,
salt,
qr_secret: crypto.randomBytes(32).toString('hex'),
is_active: true,
});
// Tạo profile
await UserProfile.create({
user_id: newUser.id,
full_name: userData.full_name,
phone: userData.phone,
});
console.log(` ✅ Đã tạo user: ${userData.username}`);
console.log(` Email: ${userData.email}`);
console.log(` Password: ${userData.password}\n`);
}
console.log('✅ Hoàn tất tạo test users!\n');
console.log('═══════════════════════════════════════════════════');
console.log('📋 THÔNG TIN ĐĂNG NHẬP TEST:');
console.log('═══════════════════════════════════════════════════');
testUsers.forEach(user => {
console.log(`\n👤 ${user.full_name}`);
console.log(` Username: ${user.username}`);
console.log(` Email: ${user.email}`);
console.log(` Password: ${user.password}`);
});
console.log('\n═══════════════════════════════════════════════════');
console.log('\n🌐 Mở trình duyệt và truy cập:');
console.log(' http://localhost:4000/login.html');
console.log('\n💡 Sử dụng thông tin trên để đăng nhập!\n');
process.exit(0);
} catch (error) {
console.error('❌ Lỗi:', error.message);
console.error(error);
process.exit(1);
}
}
// Run script
createTestUser();