Gitlab@Informatics

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

Project Round 2

parent fd04b506
No related branches found
No related tags found
No related merge requests found
exports.postRegister = async (req, res) => {
const { name, email, password, confirmPassword } = req.body;
if (password !== confirmPassword) {
return res.render('register', { message: 'Passwords do not match' });
}
try {
const existingUser = await User.findOne(email);
if (existingUser) {
return res.render('register', { message: 'Email already in use' });
}
const userId = await User.create(name, email, password);
req.session.userId = userId;
res.redirect('/login');
} catch (err) {
console.error('❌ Error creating user:', err);
res.render('register', { message: 'Error creating user' });
}
};
......@@ -19,58 +19,4 @@ exports.getTourDetails = async (req, res) => {
}
};
const User = require('../models/tourModel');
exports.getLogin = (req, res) => {
res.render('login', { message: null });
};
exports.getRegister = (req, res) => {
res.render('register', { message: null });
};
exports.postRegister = async (req, res) => {
const { name, email, password, confirmPassword } = req.body;
if (password !== confirmPassword) {
return res.render('register', { message: 'Passwords do not match' });
}
try {
const existingUser = await User.findOne(email);
if (existingUser) {
return res.render('register', { message: 'Email already in use' });
}
const userId = await User.create(name, email, password);
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;
try {
const isMatch = await User.comparePassword(email, password);
if (!isMatch) {
return res.render('login', { message: 'Invalid email or password' });
}
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');
});
};
......@@ -12,39 +12,4 @@ class Tour {
}
}
class User {
static async findOne(email) {
try {
const [rows] = await db.query('SELECT * FROM users WHERE email = ?', [email]);
return rows.length > 0 ? rows[0] : null;
} catch (err) {
throw err;
}
}
static async create(name, email, password) {
try {
const hashedPassword = await bcrypt.hash(password, 10);
const [result] = await db.query(
'INSERT INTO users (name, email, password) VALUES (?, ?, ?)',
[name, email, hashedPassword]
);
return result.insertId;
} catch (err) {
throw err;
}
}
static async comparePassword(email, password) {
try {
const user = await User.findOne(email);
if (!user) return false;
return await bcrypt.compare(password, user.password);
} catch (err) {
throw err;
}
}
}
module.exports = User;
module.exports = Tour;
const db = require('../config/database'); // เชื่อมต่อ MySQL
const bcrypt = require('bcryptjs');
class User {
static async findOne(email) {
try {
const [rows] = await db.query('SELECT * FROM users WHERE email = ?', [email]);
return rows.length > 0 ? rows[0] : null;
} catch (err) {
throw err;
}
}
static async create(name, email, password) {
try {
const hashedPassword = await bcrypt.hash(password, 10);
const [result] = await db.query(
'INSERT INTO users (name, email, password) VALUES (?, ?, ?)',
[name, email, hashedPassword]
);
return result.insertId;
} catch (err) {
throw err;
}
}
static async comparePassword(email, password) {
try {
const user = await User.findOne(email);
if (!user) return false;
return await bcrypt.compare(password, user.password);
} catch (err) {
throw err;
}
}
}
module.exports = User;
const express = require('express');
const router = express.Router();
const tourController = require('../controllers/tourController');
const authController = require('../controllers/authController');
router.get('/', tourController.getTours);
router.get('/tour/:id', tourController.getTourDetails);
router.get('/login', tourController.getLogin);
router.get('/register', tourController.getRegister);
router.post('/login', tourController.postLogin);
router.post('/register', tourController.postRegister);
router.get('/login', authController.getLogin);
router.get('/register', authController.getRegister);
router.post('/login', authController.postLogin);
router.post('/register', authController.postRegister);
module.exports = router;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment