Gitlab@Informatics

Skip to content
Snippets Groups Projects
Commit fd04b506 authored by 65160394's avatar 65160394
Browse files

Project Round 2

parent 9fdf7437
No related branches found
No related tags found
No related merge requests found
...@@ -29,40 +29,48 @@ exports.getRegister = (req, res) => { ...@@ -29,40 +29,48 @@ exports.getRegister = (req, res) => {
res.render('register', { message: null }); res.render('register', { message: null });
}; };
exports.postLogin = (req, res) => { exports.postRegister = async (req, res) => {
const { email, password } = req.body;
User.comparePassword(req.db, email, password, (err, isMatch) => {
if (err || !isMatch) {
return res.render('login', { message: 'Invalid email or password' });
}
req.session.userId = email; // เก็บอีเมลของผู้ใช้ไว้ใน session
res.redirect('/');
});
};
exports.postRegister = (req, res) => {
const { name, email, password, confirmPassword } = req.body; const { name, email, password, confirmPassword } = req.body;
if (password !== confirmPassword) { if (password !== confirmPassword) {
return res.render('register', { message: 'Passwords do not match' }); return res.render('register', { message: 'Passwords do not match' });
} }
User.findOne(email, (err, user) => { try {
if (err) { const existingUser = await User.findOne(email);
return res.render('register', { message: 'Error checking email' }); if (existingUser) {
return res.render('register', { message: 'Email already in use' });
} }
if (user) { const userId = await User.create(name, email, password);
return res.render('register', { message: 'Email already in use' }); req.session.userId = userId;
res.redirect('/login');
} catch (err) {
console.error(err);
res.render('register', { message: 'Error creating user' });
} }
};
exports.postLogin = async (req, res) => {
const { email, password } = req.body;
User.create(name, email, password, (err, userId) => { try {
if (err) { const isMatch = await User.comparePassword(email, password);
return res.render('register', { message: 'Error creating user' }); if (!isMatch) {
return res.render('login', { message: 'Invalid email or password' });
} }
req.session.userId = userId;
req.session.userId = email;
res.redirect('/');
} catch (err) {
console.error(err);
res.render('login', { message: 'Error logging in' });
}
};
exports.logout = (req, res) => {
req.session.destroy(() => {
res.redirect('/login'); res.redirect('/login');
}); });
});
}; };
...@@ -12,37 +12,39 @@ class Tour { ...@@ -12,37 +12,39 @@ class Tour {
} }
} }
const User = { class User {
findOne: (email, callback) => { static async findOne(email) {
const query = 'SELECT * FROM users WHERE email = ?'; try {
db.query(query, [email], (err, results) => { const [rows] = await db.query('SELECT * FROM users WHERE email = ?', [email]);
if (err) return callback(err); return rows.length > 0 ? rows[0] : null;
callback(null, results.length > 0 ? results[0] : null); } catch (err) {
}); throw err;
}, }
}
create: (name, email, password, callback) => {
bcrypt.hash(password, 10, (err, hashedPassword) => {
if (err) return callback(err);
const query = 'INSERT INTO users (name, email, password) VALUES (?, ?, ?)'; static async create(name, email, password) {
db.query(query, [name, email, hashedPassword], (err, results) => { try {
if (err) return callback(err); const hashedPassword = await bcrypt.hash(password, 10);
callback(null, results.insertId); const [result] = await db.query(
}); 'INSERT INTO users (name, email, password) VALUES (?, ?, ?)',
}); [name, email, hashedPassword]
}, );
return result.insertId;
} catch (err) {
throw err;
}
}
comparePassword: (email, password, callback) => { static async comparePassword(email, password) {
User.findOne(email, (err, user) => { try {
if (err || !user) return callback(err || 'User not found'); const user = await User.findOne(email);
bcrypt.compare(password, user.password, (err, isMatch) => { if (!user) return false;
if (err) return callback(err); return await bcrypt.compare(password, user.password);
callback(null, isMatch); } catch (err) {
}); throw err;
}); }
} }
}; }
module.exports = User; module.exports = User;
module.exports = Tour; module.exports = Tour;
...@@ -9,4 +9,5 @@ router.get('/register', tourController.getRegister); ...@@ -9,4 +9,5 @@ router.get('/register', tourController.getRegister);
router.post('/login', tourController.postLogin); router.post('/login', tourController.postLogin);
router.post('/register', tourController.postRegister); router.post('/register', tourController.postRegister);
module.exports = router; module.exports = router;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment