112 lines
3.6 KiB
JavaScript
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();
|