Gitlab@Informatics

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

Project Round 2

parent f18a6c7a
Branches
No related tags found
No related merge requests found
...@@ -3,4 +3,3 @@ DB_PORT=3306 ...@@ -3,4 +3,3 @@ DB_PORT=3306
DB_USER=root DB_USER=root
DB_PASSWORD=DCRmgr02120 DB_PASSWORD=DCRmgr02120
DB_NAME=tourdb DB_NAME=tourdb
JWT_SECRET=bankkhabb
\ No newline at end of file
const db = require('../config/database'); const db = require('../config/database');
const bcrypt = require('bcrypt'); const bcrypt = require('bcrypt');
const jwt = require('jsonwebtoken');
exports.register = async (req, res) => { exports.register = async (req, res) => {
const { name, email, password } = req.body; const { name, email, password } = req.body;
try { try {
// ตรวจสอบว่ามีอีเมลนี้อยู่แล้วหรือไม่
const [existingUser] = await db.query('SELECT * FROM users WHERE email = ?', [email]); const [existingUser] = await db.query('SELECT * FROM users WHERE email = ?', [email]);
if (existingUser.length > 0) { if (existingUser.length > 0) {
return res.status(400).json({ message: 'Email นี้ถูกใช้ไปแล้ว' }); return res.status(400).json({ message: 'Email นี้ถูกใช้ไปแล้ว' });
} }
// เข้ารหัสรหัสผ่าน
const hashedPassword = await bcrypt.hash(password, 10); const hashedPassword = await bcrypt.hash(password, 10);
// บันทึกข้อมูลลงฐานข้อมูล
await db.query('INSERT INTO users (name, email, password) VALUES (?, ?, ?)', [name, email, hashedPassword]); await db.query('INSERT INTO users (name, email, password) VALUES (?, ?, ?)', [name, email, hashedPassword]);
res.status(201).json({ message: 'ลงทะเบียนสำเร็จ' }); res.status(201).json({ message: 'ลงทะเบียนสำเร็จ' });
...@@ -28,23 +23,28 @@ exports.login = async (req, res) => { ...@@ -28,23 +23,28 @@ exports.login = async (req, res) => {
const { email, password } = req.body; const { email, password } = req.body;
try { try {
// ค้นหาผู้ใช้จากอีเมล
const [user] = await db.query('SELECT * FROM users WHERE email = ?', [email]); const [user] = await db.query('SELECT * FROM users WHERE email = ?', [email]);
if (user.length === 0) { if (user.length === 0) {
return res.status(400).json({ message: 'อีเมลหรือรหัสผ่านไม่ถูกต้อง' }); return res.status(400).json({ message: 'อีเมลหรือรหัสผ่านไม่ถูกต้อง' });
} }
// ตรวจสอบรหัสผ่าน
const isMatch = await bcrypt.compare(password, user[0].password); const isMatch = await bcrypt.compare(password, user[0].password);
if (!isMatch) { if (!isMatch) {
return res.status(400).json({ message: 'อีเมลหรือรหัสผ่านไม่ถูกต้อง' }); return res.status(400).json({ message: 'อีเมลหรือรหัสผ่านไม่ถูกต้อง' });
} }
// สร้าง JWT Token // เก็บ session หลังจากล็อกอิน
const token = jwt.sign({ id: user[0].id, email: user[0].email }, process.env.JWT_SECRET, { expiresIn: '1h' }); req.session.userId = user[0].id;
req.session.userEmail = user[0].email;
res.status(200).json({ message: 'เข้าสู่ระบบสำเร็จ', token }); res.status(200).json({ message: 'เข้าสู่ระบบสำเร็จ' });
} catch (error) { } catch (error) {
res.status(500).json({ message: 'เกิดข้อผิดพลาด', error }); res.status(500).json({ message: 'เกิดข้อผิดพลาด', error });
} }
}; };
exports.logout = (req, res) => {
req.session.destroy(() => {
res.json({ message: 'ออกจากระบบสำเร็จ' });
});
};
const express = require('express'); const express = require('express');
const { register, login } = require('../controllers/authController'); const { register, login, logout } = require('../controllers/authController');
const router = express.Router(); const router = express.Router();
router.post('/register', register); router.post('/register', register);
router.post('/login', login); router.post('/login', login);
router.get('/logout', logout);
module.exports = router; module.exports = router;
const express = require('express'); const express = require('express');
const bodyParser = require('body-parser'); const bodyParser = require('body-parser');
const dotenv = require('dotenv'); const dotenv = require('dotenv');
const tourRoutes = require('./routes/tourRoutes'); const session = require('express-session');
const authRoutes = require('./routes/authRoutes'); const authRoutes = require('./routes/authRoutes');
const tourRoutes = require('./routes/tourRoutes');
dotenv.config(); dotenv.config();
const app = express(); const app = express();
app.set('view engine', 'ejs'); app.use(bodyParser.json());
app.use(express.static('public'));
app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json()); // รองรับ JSON requests
// ใช้ session สำหรับการล็อกอิน
app.use(session({
secret: 'bankkhabb', // เปลี่ยนเป็นค่า secret ของคุณ
resave: false,
saveUninitialized: true,
cookie: { secure: true } // ถ้าใช้ HTTPS เปลี่ยนเป็น true
}));
// Routes // Routes
app.use('/auth', authRoutes); // เส้นทางสำหรับ Register / Login app.use('/auth', authRoutes);
app.use('/', tourRoutes); // เส้นทางสำหรับการแสดงทัวร์ app.use('/', tourRoutes);
const PORT = process.env.PORT || 3000; 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