diff --git a/server.js b/server.js index f8792ed7cce25808b6f15383a726578a3c2b99f4..80ef9c702411684e66ef659bb28ce5ef89ed3a05 100644 --- a/server.js +++ b/server.js @@ -23,7 +23,7 @@ app.use(session({ cookie: { maxAge: 24 * 60 * 60 * 1000, secure: false, // เปลี่ยนเป็น true ถ้าใช้ HTTPS - httpOnly: true // เปลี่ยนจาก true เป็น false เพื่อลองดูว่า cookie เก็บค่าหรือไม่ + httpOnly: false // เปลี่ยนจาก true เป็น false เพื่อลองดูว่า cookie เก็บค่าหรือไม่ } })); @@ -33,7 +33,7 @@ app.use((req, res, next) => { }); -console.log("✅ Session Middleware Initialized"); +console.log("Session Middleware Initialized"); // Middleware app.use(express.static(path.join(__dirname, "public"))); diff --git a/shop-routes/cart.js b/shop-routes/cart.js index abbe9fbb17f6d4175fb5cb691f0bfad3209bdffa..65b06d837208f1c59865370d9f85e0fd9657cad0 100644 --- a/shop-routes/cart.js +++ b/shop-routes/cart.js @@ -3,13 +3,13 @@ const router = express.Router(); const pool = require('../config/database'); // ฟังก์ชันช่วยคำนวณราคารวม -async function calculateTotal(sessionId) { +async function calculateTotal(userId) { const [cartItems] = await pool.query( `SELECT cart_items.*, products.price FROM cart_items JOIN products ON cart_items.product_id = products.id - WHERE cart_items.session_id = ?`, - [sessionId] + WHERE cart_items.user_id = ?`, + [userId] ); return cartItems.reduce((sum, item) => sum + (item.price * item.quantity), 0); } @@ -34,7 +34,14 @@ router.get('/', async (req, res) => { // เพิ่มสินค้าลงตะกร้า router.post('/add', async (req, res) => { + console.log("Session User:", req.session.user); // ดูค่า session + console.log("Received Data:", req.body); // ดูค่าที่ส่งมา + const { productId, quantity } = req.body; + if (!req.session.user) { + return res.status(401).send('Unauthorized'); + } + try { const [[product]] = await pool.query( 'SELECT stock FROM products WHERE id = ?', [productId] @@ -48,14 +55,13 @@ router.post('/add', async (req, res) => { return res.status(400).send('สินค้ามีจำนวนไม่เพียงพอ'); } - // ตรวจสอบว่าสินค้านี้มีอยู่ในตะกร้าหรือยัง + // ตรวจสอบว่ามีสินค้าในตะกร้าอยู่แล้วหรือไม่ const [[existingItem]] = await pool.query( - 'SELECT id, quantity FROM cart_items WHERE session_id = ? AND product_id = ?', - [req.session.id, productId] + 'SELECT id, quantity FROM cart_items WHERE user_id = ? AND product_id = ?', + [req.session.user.id, productId] ); if (existingItem) { - // อัปเดตจำนวนสินค้า const newQuantity = existingItem.quantity + parseInt(quantity); if (newQuantity > product.stock) { return res.status(400).send('สินค้ามีจำนวนไม่เพียงพอ'); @@ -65,31 +71,34 @@ router.post('/add', async (req, res) => { [newQuantity, existingItem.id] ); } else { - // เพิ่มสินค้าใหม่ await pool.query( - 'INSERT INTO cart_items (session_id, product_id, quantity) VALUES (?, ?, ?)', - [req.session.id, productId, parseInt(quantity)] + 'INSERT INTO cart_items (user_id, product_id, quantity) VALUES (?, ?, ?)', + [req.session.user.id, productId, parseInt(quantity)] ); } res.redirect('/cart'); } catch (error) { - console.error(error); - res.status(500).send('Error adding to cart'); + console.error("Error adding to cart:", error); + res.status(500).send('Error adding to cart.'); } }); // อัพเดทจำนวนสินค้าในตะกร้า router.post('/update', async (req, res) => { console.log("Received Data:", req.body); + if (!req.session.user) { + return res.status(401).send('Unauthorized'); + } + const { cartItemId, quantity } = req.body; try { const [[cartItem]] = await pool.query( `SELECT cart_items.*, products.price, products.stock FROM cart_items JOIN products ON cart_items.product_id = products.id - WHERE cart_items.id = ? AND cart_items.user_id = ?`, // เปลี่ยนจาก session_id เป็น user_id - [cartItemId, req.session.user.id] + WHERE cart_items.id = ? AND cart_items.user_id = ?`, + [cartItemId, req.session.user.id] // ใช้ user_id ); if (!cartItem) {