Gitlab@Informatics

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

Project Round 2

parent addddb91
Branches
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' });
}
};
const Tour = require('../models/tourModel'); const Tour = require('../models/tourModel');
const User = require('../models/tourModel');
exports.getTours = async (req, res) => { exports.getTours = async (req, res) => {
try { try {
...@@ -19,4 +20,57 @@ exports.getTourDetails = async (req, res) => { ...@@ -19,4 +20,57 @@ exports.getTourDetails = async (req, res) => {
} }
}; };
//User//
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,4 +12,39 @@ class Tour { ...@@ -12,4 +12,39 @@ 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; 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;
...@@ -15,7 +15,7 @@ app.use('/', tourRoutes); ...@@ -15,7 +15,7 @@ app.use('/', tourRoutes);
app.use('/login', tourRoutes); app.use('/login', tourRoutes);
app.use('/register', tourRoutes); app.use('/register', tourRoutes);
const PORT = process.env.PORT || 3306; const PORT = process.env.PORT || 3000;
app.listen(PORT, () => { app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`); console.log(`Server is running on port ${PORT}`);
}); });
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment