const bcrypt = require('bcrypt'); const pool = require('../db'); module.exports = { registerUser: async (req, res) => { const { email, username, fname, lname, rpassword, confirm_password } = req.body; if (rpassword !== confirm_password) { req.flash('message', 'Passwords do not match!'); return res.redirect('/register'); } if (!email || !username || !fname || !lname || !rpassword || !confirm_password) { req.flash('message', 'Please fill in all fields!'); return res.redirect('/register'); } try { // ตรวจสอบว่าอีเมลมีอยู่ในระบบหรือไม่ const [existingUser] = await pool.execute('SELECT * FROM users WHERE email = ?', [email]); if (existingUser.length > 0) { req.flash('message', 'Email is already registered.'); return res.redirect('/register'); } // ตรวจสอบว่า username มีอยู่แล้วหรือไม่ const [existingUsername] = await pool.execute('SELECT * FROM users WHERE username = ?', [username]); if (existingUsername.length > 0) { req.flash('message', 'Username is already taken.'); return res.redirect('/register'); } // แฮชรหัสผ่าน const hashedPassword = await bcrypt.hash(rpassword, 10); // บันทึกข้อมูลผู้ใช้ในฐานข้อมูล const query = 'INSERT INTO users (email, username, password, fname, lname) VALUES (?, ?, ?, ?, ?)'; const result = await pool.execute(query, [email, username, hashedPassword, fname, lname]); // ตรวจสอบผลลัพธ์จากการแทรกข้อมูล if (result.affectedRows > 0) { req.flash('message', 'Registration successful! Please log in.'); res.redirect('/login'); } else { req.flash('message', 'Error occurred during registration. Please try again later.'); res.redirect('/register'); } } catch (err) { console.error('Error inserting user:', err); req.flash('message', 'Error occurred during registration. Please try again later.'); res.redirect('/register'); } } };