// const User = require('../models/User');
// const bcrypt = require('bcryptjs');
// const jwt = require('jsonwebtoken');
// const secretKey = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJtZW1iZXJfaWQiOiJkZjE0OWM4Ni02Njc0LTRmODItYTE0Yi05OWFjNmZjYjJjNjIiLCJ1c2VybmFtZSI6ImNoYW5hY2hhaSIsImlhdCI6MTcyNDYzNDI0NSwiZXhwIjoxNzI0NjM3ODQ1fQ.bxa0LGelFhlGGb8PSgNd1oq-QZKqaNKbLA6oMuzEEeo'; // Replace with your own secret key
// exports.login = async (req, res) => {
//     try {
//         const { member_username, member_password } = req.body;

        
//         const member = await Member.findOne({ where: { member_username } });

//         if (!member) {
//             return res.status(404).json({ error: 'Member not found' });
//         }

        
//         const isMatch = await bcrypt.compare(member_password, member.member_password);

//         if (!isMatch) {
//             return res.status(401).json({ error: 'Invalid credentials' });
//         }

        
//         const token = jwt.sign(
//             { member_id: member.member_id, username: member.username },
//             secretKey,
//             { expiresIn: '1y' } 
//         );

//         res.status(200).json({ accessToken : token });
//     } catch (err) {
//         res.status(500).json({ error: err.message });
//     }

// };
// controllers/authController.js

const User = require('../models/User');  // Model User ที่เชื่อมต่อกับตาราง users
const bcrypt = require('bcryptjs');
const jwt = require('jsonwebtoken');

// ควรเก็บ secretKey ในไฟล์ .env หรือ config เพื่อลดความเสี่ยง
const secretKey = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiNzMwNzlmM2ItYjU4YS00NmU2LWE3NzktMjBhNjQ5MTFlNTA1IiwiZmlyc3RfbmFtZSI6ImFkbWluIiwibGFzdF9uYW1lIjoiRG9lIiwiZW1haWwiOiJhZG1pbkBleGFtcGxlLmNvbSIsInJvbGUiOiJhZG1pbiIsImNyZWF0ZWRfYXQiOiIyMDI1LTAzLTEwVDE5OjI4OjA0LjQ5MloifQ.YRr5tX95cQylkGaFWEiQMyFzSosoms-UZmlYo5W_ixo'; // ตัวอย่าง, ควรเปลี่ยนเป็นค่าจริง

exports.login = async (req, res) => {
  try {
    // ดึง email และ password จาก request body
    const { email, password } = req.body;

    // ค้นหา user โดยใช้อีเมล
    const user = await User.findOne({ where: { email } });
    if (!user) {
      return res.status(404).json({ error: 'User not found' });
    }

    // ตรวจสอบรหัสผ่านที่กรอก เทียบกับที่ hash ไว้ใน DB
    const isMatch = await bcrypt.compare(password, user.password);
    if (!isMatch) {
      return res.status(401).json({ error: 'Invalid credentials' });
    }

    // สร้าง token โดยใส่ข้อมูลส่วนที่ต้องการ เช่น user_id, role
    // expiresIn กำหนดอายุของ token (ตัวอย่าง 1 ปี)
    const token = jwt.sign(
      { user_id: user.user_id, email: user.email, role: user.role },
      secretKey,
      { expiresIn: '1y' }
    );

    return res.status(200).json({ 
      message: 'Login successful',
      accessToken: token,
      user: user
    });
  } catch (err) {
    console.error(err);
    return res.status(500).json({ error: err.message });
  }
};
