From 01318dc92c904689928d6a1d3bbccc17c378e5a1 Mon Sep 17 00:00:00 2001 From: Atiwit Pattanapukdee <65160394@go.buu.ac.th> Date: Sun, 16 Mar 2025 13:51:42 +0700 Subject: [PATCH] Project Round 2 --- .env | 1 - controllers/authController.js | 20 ++++++++++---------- routes/authRoutes.js | 3 ++- server.js | 21 ++++++++++++++------- 4 files changed, 26 insertions(+), 19 deletions(-) diff --git a/.env b/.env index 7199f33..c344340 100644 --- a/.env +++ b/.env @@ -3,4 +3,3 @@ DB_PORT=3306 DB_USER=root DB_PASSWORD=DCRmgr02120 DB_NAME=tourdb -JWT_SECRET=bankkhabb \ No newline at end of file diff --git a/controllers/authController.js b/controllers/authController.js index 29e6e6b..9827ace 100644 --- a/controllers/authController.js +++ b/controllers/authController.js @@ -1,21 +1,16 @@ const db = require('../config/database'); const bcrypt = require('bcrypt'); -const jwt = require('jsonwebtoken'); exports.register = async (req, res) => { const { name, email, password } = req.body; try { - // ตรวจสอบว่ามีอีเมลนี้อยู่แล้วหรือไม่ const [existingUser] = await db.query('SELECT * FROM users WHERE email = ?', [email]); if (existingUser.length > 0) { return res.status(400).json({ message: 'Email นี้ถูกใช้ไปแล้ว' }); } - // เข้ารหัสรหัสผ่าน const hashedPassword = await bcrypt.hash(password, 10); - - // บันทึกข้อมูลลงฐานข้อมูล await db.query('INSERT INTO users (name, email, password) VALUES (?, ?, ?)', [name, email, hashedPassword]); res.status(201).json({ message: 'ลงทะเบียนสำเร็จ' }); @@ -28,23 +23,28 @@ exports.login = async (req, res) => { const { email, password } = req.body; try { - // ค้นหาผู้ใช้จากอีเมล const [user] = await db.query('SELECT * FROM users WHERE email = ?', [email]); if (user.length === 0) { return res.status(400).json({ message: 'อีเมลหรือรหัสผ่านไม่ถูกต้อง' }); } - // ตรวจสอบรหัสผ่าน const isMatch = await bcrypt.compare(password, user[0].password); if (!isMatch) { return res.status(400).json({ message: 'อีเมลหรือรหัสผ่านไม่ถูกต้อง' }); } - // สร้าง JWT Token - const token = jwt.sign({ id: user[0].id, email: user[0].email }, process.env.JWT_SECRET, { expiresIn: '1h' }); + // เก็บ session หลังจากล็อกอิน + 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) { res.status(500).json({ message: 'เกิดข้อผิดพลาด', error }); } }; + +exports.logout = (req, res) => { + req.session.destroy(() => { + res.json({ message: 'ออกจากระบบสำเร็จ' }); + }); +}; diff --git a/routes/authRoutes.js b/routes/authRoutes.js index a0495a7..355dbf4 100644 --- a/routes/authRoutes.js +++ b/routes/authRoutes.js @@ -1,9 +1,10 @@ const express = require('express'); -const { register, login } = require('../controllers/authController'); +const { register, login, logout } = require('../controllers/authController'); const router = express.Router(); router.post('/register', register); router.post('/login', login); +router.get('/logout', logout); module.exports = router; diff --git a/server.js b/server.js index 48dd3a7..97061e7 100644 --- a/server.js +++ b/server.js @@ -1,24 +1,31 @@ const express = require('express'); const bodyParser = require('body-parser'); const dotenv = require('dotenv'); -const tourRoutes = require('./routes/tourRoutes'); +const session = require('express-session'); const authRoutes = require('./routes/authRoutes'); +const tourRoutes = require('./routes/tourRoutes'); dotenv.config(); const app = express(); -app.set('view engine', 'ejs'); -app.use(express.static('public')); +app.use(bodyParser.json()); 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 -app.use('/auth', authRoutes); // เส้นทางสำหรับ Register / Login -app.use('/', tourRoutes); // เส้นทางสำหรับการแสดงทัวร์ +app.use('/auth', authRoutes); +app.use('/', tourRoutes); const PORT = process.env.PORT || 3000; app.listen(PORT, () => { - console.log(`🚀 Server is running on port ${PORT}`); + console.log(`Server is running on port ${PORT}`); }); -- GitLab