Commit 37c33048 by Ooh-Ao

userlogin

parent 9c82edea
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 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 } });
// const member = await Member.findOne({ where: { member_username } });
if (!member) {
return res.status(404).json({ error: 'Member not found' });
}
// if (!member) {
// return res.status(404).json({ error: 'Member not found' });
// }
const isMatch = await bcrypt.compare(member_password, member.member_password);
// const isMatch = await bcrypt.compare(member_password, member.member_password);
if (!isMatch) {
return res.status(401).json({ error: 'Invalid credentials' });
}
// 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 });
// 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' });
}
};
\ No newline at end of file
// ตรวจสอบรหัสผ่านที่กรอก เทียบกับที่ 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 });
}
};
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment