From 8c32468d2d7c3feba9e75641ed2f6874d6fa1aa3 Mon Sep 17 00:00:00 2001
From: 65160381 <65160381@go.buu.ac.th>
Date: Mon, 24 Mar 2025 16:17:54 +0000
Subject: [PATCH] Update 4 files

- /index.js
- /controllers/registerController.js
- /controllers/loginController.js
- /views/register.ejs
---
 controllers/loginController.js    | 13 +++++++----
 controllers/registerController.js | 38 ++++++++++++++----------------
 index.js                          | 16 +++++++++----
 views/register.ejs                | 39 ++++++++++++++++++++-----------
 4 files changed, 62 insertions(+), 44 deletions(-)

diff --git a/controllers/loginController.js b/controllers/loginController.js
index a7de748..b5c3cd2 100644
--- a/controllers/loginController.js
+++ b/controllers/loginController.js
@@ -7,7 +7,7 @@ module.exports = {
     },
 
     loginUser: async (req, res) => {
-        const { email, rpassword } = req.body;
+        const { email, password } = req.body;  // เปลี่ยนจาก rpassword เป็น password เพื่อให้ชัดเจน
         try {
             const [rows] = await pool.execute('SELECT * FROM users WHERE email = ?', [email]);
             if (rows.length === 0) {
@@ -16,17 +16,20 @@ module.exports = {
             }
 
             const user = rows[0];
-            const match = await bcrypt.compare(rpassword, user.password);
+
+            // ตรวจสอบรหัสผ่าน
+            const match = await bcrypt.compare(password, user.password); // เปลี่ยน rpassword เป็น password
             if (match) {
                 req.session.userId = user.user_id; // ใช้ user_id แทน id
-                res.redirect('/');
+                res.redirect('/'); // ถ้าการเข้าสู่ระบบสำเร็จจะ redirect ไปที่หน้า home
             } else {
                 req.flash('message', 'Password incorrect');
-                return res.redirect('/login');
+                return res.redirect('/login'); // ถ้ารหัสผ่านไม่ตรง
             }
         } catch (err) {
             console.error(err);
-            res.status(500).send('Server error');
+            req.flash('message', 'Server error, please try again later');
+            res.status(500).redirect('/login'); // ถ้าเกิดข้อผิดพลาดในการเชื่อมต่อฐานข้อมูล
         }
     }
 };
diff --git a/controllers/registerController.js b/controllers/registerController.js
index f2b6835..2eee95b 100644
--- a/controllers/registerController.js
+++ b/controllers/registerController.js
@@ -1,24 +1,22 @@
-const bcrypt = require('bcrypt');
-const pool = require('../db');
+// ในไฟล์ registerController.js
 
-module.exports = {
-    showRegisterPage: (req, res) => {
-        res.render('register', { message: req.flash('message') });
-    },
-
-    registerUser: async (req, res) => {
-        const { email, rpassword } = req.body;
-
-        try {
-            const hashedPassword = await bcrypt.hash(rpassword, 10);
-            const query = 'INSERT INTO users (email, password) VALUES (?, ?)';
-            await pool.execute(query, [email, hashedPassword]);
+exports.showRegisterPage = (req, res) => {
+    res.render('register'); // ส่งค่าไปยังไฟล์ EJS ที่เป็นหน้า register
+};
 
-            req.flash('message', 'User registered successfully. Please log in.');
-            res.redirect('/login');
-        } catch (err) {
-            console.error('Error inserting user:', err);
-            res.status(500).send('Error occurred');
-        }
+exports.registerUser = async (req, res) => {
+    const { email, rpassword } = req.body;
+    
+    // ตรวจสอบข้อมูล เช่น ชื่อผู้ใช้และรหัสผ่าน
+    // สมมติว่าเราทำการเก็บข้อมูลผู้ใช้ใน DB
+    
+    try {
+        // ตัวอย่างการสมัคร (สมมติว่ามีการเก็บข้อมูลใน DB)
+        // สมมติว่าผู้ใช้สมัครสำเร็จ
+        req.flash('messages', 'Registration successful!');
+        res.redirect('/login');
+    } catch (error) {
+        req.flash('messages', 'Error occurred during registration. Please try again later.');
+        res.redirect('/register');
     }
 };
diff --git a/index.js b/index.js
index b8c1f83..ca41d20 100644
--- a/index.js
+++ b/index.js
@@ -7,19 +7,25 @@ const app = express();
 app.use(express.static('public'));
 app.use(express.json());
 app.use(express.urlencoded({ extended: true }));
-app.use(bodyParser.urlencoded({ extended: true }));
+// ไม่จำเป็นต้องใช้ body-parser เพราะ express เองก็รองรับแล้ว
+// app.use(bodyParser.urlencoded({ extended: true }));
+
+// ตั้งค่า session
 app.use(session({
     secret: 'secretkey',
     resave: true,
     saveUninitialized: true
 }));
+
+// ใช้ flash messages
 app.use(flash());
+
+// ตั้งค่า view engine เป็น ejs
 app.set('view engine', 'ejs');
 
 // กำหนดค่า session สำหรับการเช็คการ login
 app.use('*', (req, res, next) => {
-    // ใช้ req.session.userId เพื่อเก็บสถานะการ login
-    global.loggedIn = req.session.userId; // ควรใช้ req.session มากกว่าการใช้ global
+    req.session.loggedIn = req.session.userId; // ใช้ session แทน global
     next();
 });
 
@@ -34,8 +40,8 @@ app.get('/', indexController);
 app.get('/login', loginController.showLoginPage);
 app.post('/user/login', loginController.loginUser);
 app.get('/register', registerController.showRegisterPage);
-app.post('/user/register', registerController.registerUser); // ลบการเรียกซ้ำ
-app.get('/logout', logoutController);
+app.post('/user/register', registerController.registerUser);
+app.get('/logout', logoutController.logoutUser); // เพิ่ม route สำหรับ logout
 
 const port = process.env.PORT || 3000;
 app.listen(port, () => {
diff --git a/views/register.ejs b/views/register.ejs
index ab9f92a..bb3ef40 100644
--- a/views/register.ejs
+++ b/views/register.ejs
@@ -129,26 +129,37 @@
     </svg>
     
 <main class="form-signin w-100 m-auto">
-  <form action="/user/register" method="POST">
-    <h1 class="h3 mb-3 fw-normal">Sign up</h1>
-
-    <div class="form-floating">
-        <label for="floatingInput">Email address</label>
+  
+<% if (messages.length > 0) { %>
+  <div class="alert alert-danger">
+      <ul>
+          <% messages.forEach(function(message) { %>
+              <li><%= message %></li>
+          <% }); %>
+      </ul>
+  </div>
+<% } %>
+
+<form action="/user/register" method="POST">
+  <h1 class="h3 mb-3 fw-normal">Sign up</h1>
+
+  <div class="form-floating">
+      <label for="floatingInput">Email address</label>
       <input type="email" class="form-control" id="floatingInput" name="email" placeholder="name@example.com">
-    </div>
-    <div class="form-floating">
-        <label for="floatingPassword">Password</label>
+  </div>
+  <div class="form-floating">
+      <label for="floatingPassword">Password</label>
       <input type="password" class="form-control" id="floatingPassword" name="rpassword" placeholder="Password">
-    </div>
+  </div>
 
-    <div class="form-check text-start my-3">
+  <div class="form-check text-start my-3">
       <input class="form-check-input" type="checkbox" value="remember-me" id="flexCheckDefault">
       <label class="form-check-label" for="flexCheckDefault">
-        Remember me
+          Remember me
       </label>
-    </div>
-    <button class="btn btn-primary w-100 py-2" type="submit">Sign up</button>
-  </form>
+  </div>
+  <button class="btn btn-primary w-100 py-2" type="submit">Sign up</button>
+</form>
 </main>
 <script src="/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
 
-- 
GitLab