อันนี้คือไฟล์ที่ใช้จัดการกับ route ที่เกี่ยวกับuserครับเป็นไฟล์ที่เกิดปัญหาครับ```js const express = require("express"); const router = express.Router(); // ทำงานกับฐานข้อมูล const usersDb = require("../models/user.js"); const stdDb = require("../models/student.js"); const insDb = require("../models/instructors.js"); const passport = require("passport"); const localStrategy = require("passport-local").Strategy; // ล็อกเอาท์ออกจากระบบ router.get("/logout", (req, res) => { req.logOut((err) => { if (err) { return res.status(500).send("เกิดข้อผิดพลาดในการ logout"); } if (!req.isAuthenticated()) res.redirect('http://localhost:3000/index'); }); }); // ลงทะเบียนสมาชิก router.post("/register", async (req, res) => { try { const data = await req.body; // destructoring const { username, password, fname, lname, email, role } = await data; if (data) { // เพิ่มข้อมูลผู้ใช้งาน const newUser = new usersDb({ username, password, email, type: role }); // console.log("🚀 ~ router.post ~ newUser:", newUser) await usersDb.saveUser(newUser); // ตรวจสอบบทบาทในการลงทะเบียน if (role === "ผู้เรียน") { const newStd = new stdDb({ username, fname, lname, email }); // console.log("🚀 ~ router.post ~ newStd:", newStd) await stdDb.saveStd(newStd); res.json({ status: "ok" }); } else { const newInst = new insDb({ username, fname, lname, email }); // console.log("🚀 ~ router.post ~ newInst:", newInst) await insDb.saveInstructor(newInst); res.json({ status: "ok" }); } } } catch (error) { console.log(error); res.status(500).send("เกิดข้อผิดพบาด"); } }); // ตรวจสอบว่าข้อมูลถูกต้องหรือไม่ // รับค่าที่ส่งมาและตรวจสอบการlogin passport.use( new localStrategy(async (username, password, done) => { // console.log("🚀 ~ passport.use ~ password:", password) try { const user = await usersDb.getUserByUsername(username); // console.log("🚀 ~ passport.use ~ data:", user.password); if (!user) { return done(null, false); } else { // console.log('user',user); const isMatch = await usersDb.comparePassword(password, user.password); // console.log("🚀 ~ passport.use ~ password:", password); // console.log("🚀 ~ passport.use ~ isMatch:", isMatch); if (isMatch) { return done(null,user); } else { return done(null, false); } } } catch (error) { console.log(error); } }) ); // จัดการsessionเมื่อผ่านการlogin passport.serializeUser((user, done) => { // console.log("🚀 ~ passport.serializeUser ~ user:", user) done(null, user.id); }); passport.deserializeUser(async (id, done) => { try { const user = await usersDb.getUserById(id); // console.log("🚀 ~ passport.deserializeUser ~ data:", data) done(null, user); } catch (error) { console.log(error); done(err, null); } }); // ล็อกอินเข้าสู่ระบบ router.post("/login", passport.authenticate("local"), async (req, res) => { try { console.log("🚀 ~/login router.post ~ req.isAuthenticated():", req.isAuthenticated()) const userRole = req.user.type; if (userRole === "ผู้เรียน") { res.json({ location: `/students/classes`,text:'ok' }); } else { res.json({ location: `/instructors/classes`,text:'ok' }); } } catch (err) { console.log(err); res.status(500).send("เกิดข้อผิดพลาด"); } }); // ส่งผลการ login กลับไปหน้าบ้าน router.get('/checklogin',(req,res) => { console.log("🚀/checklogin ~ router.post ~ req.isAuthenticated(:", req.isAuthenticated()) if(req.isAuthenticated()){ res.json({text:'ok'}); }else{ res.json({text:'no'}); } }) module.exports = router; ```