From 44f90e858b4b1fb6376243ca41580f83d671c8f1 Mon Sep 17 00:00:00 2001
From: 65160132 <65160132@go.buu.ac.th>
Date: Wed, 19 Mar 2025 15:10:50 +0700
Subject: [PATCH] logout

---
 controllers/loginController.js  | 11 +++++------
 controllers/logoutController.js |  5 +++++
 index.js                        | 10 +++++++++-
 views/index.ejs                 |  7 +++++++
 views/login.ejs                 |  6 ++++++
 5 files changed, 32 insertions(+), 7 deletions(-)
 create mode 100644 controllers/logoutController.js

diff --git a/controllers/loginController.js b/controllers/loginController.js
index 0bdf2f3..0ef09e3 100644
--- a/controllers/loginController.js
+++ b/controllers/loginController.js
@@ -1,5 +1,5 @@
 const bcrypt = require('bcrypt');
-const pool = require('../db'); // แยกไฟล์ connection ใน db.js
+const pool = require('../db');
 
 module.exports = {
     showLoginPage: (req, res) => {
@@ -17,14 +17,13 @@ module.exports = {
 
             const user = rows[0];
             const match = await bcrypt.compare(rpassword, user.password);
-            if (!match) {
+            if (match) {
+                req.session.userId = user.id
+                res.redirect('/');
+            } else {
                 req.flash('message', 'Password incorrect');
                 return res.redirect('/login');
             }
-
-            // login success (สามารถสร้าง session ได้ที่นี่)
-            req.flash('message', 'Login successful');
-            res.redirect('/');
         } catch (err) {
             console.error(err);
             res.status(500).send('Server error');
diff --git a/controllers/logoutController.js b/controllers/logoutController.js
new file mode 100644
index 0000000..712c536
--- /dev/null
+++ b/controllers/logoutController.js
@@ -0,0 +1,5 @@
+module.exports = (req, res) => {
+    req.session.destroy(() => {
+        res.redirect('/')
+    })
+}
\ No newline at end of file
diff --git a/index.js b/index.js
index 7b008b8..39e707b 100644
--- a/index.js
+++ b/index.js
@@ -3,6 +3,7 @@ const bodyParser = require('body-parser');
 const session = require('express-session');
 const flash = require('connect-flash');
 
+global.loggedIn = null
 const app = express();
 app.use(express.static('public'));
 app.use(express.json());
@@ -10,21 +11,28 @@ app.use(express.urlencoded({ extended: true }));
 app.use(bodyParser.urlencoded({ extended: true }));
 app.use(session({
     secret: 'secretkey',
-    resave: false,
+    resave: true,
     saveUninitialized: true
 }));
 app.use(flash());
 app.set('view engine', 'ejs');
+app.use('*', (req, res, next) => {
+  loggedIn = req.session.userId
+  next()
+});
 
 const indexController = require('./controllers/indexController');
 const loginController = require('./controllers/loginController');
 const registerController = require('./controllers/registerController');
+const logoutController = require('./controllers/logoutController');
 
 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.post('/user/register', registerController.registerUser);
+app.get('/logout', logoutController);
 
 const port = process.env.PORT || 3000;
 app.listen(port, () => {
diff --git a/views/index.ejs b/views/index.ejs
index 20838be..11f2fbe 100644
--- a/views/index.ejs
+++ b/views/index.ejs
@@ -50,12 +50,19 @@
                      <li class="nav-item">
                         <a class="nav-link" href="gallery.html">Gallery</a>
                      </li>
+                     <% if (loggedIn) { %>
+                     <li class="nav-item">
+                        <a class="nav-link text-danger" href="/logout">Logout</a>
+                     </li>
+                     <% } %>
+                     <% if (!loggedIn) { %>
                      <li class="nav-item">
                         <a class="nav-link" href="/login">Login</a>
                      </li>
                      <li class="nav-item">
                         <a class="nav-link" href="/register">Register</a>
                      </li>
+                     <% } %>
                      <li class="nav-item">
                         <a class="nav-link" href="#"><i class="fa fa-search" aria-hidden="true"></i></a>
                      </li>
diff --git a/views/login.ejs b/views/login.ejs
index 0b4d5d2..3b22bb0 100644
--- a/views/login.ejs
+++ b/views/login.ejs
@@ -130,6 +130,12 @@
     
 <main class="form-signin w-100 m-auto">
   <form action="/user/login" method="POST">
+    <% if (message && message.length > 0) { %>
+      <div class="alert alert-danger" role="alert">
+          <%= message %>
+      </div>
+    <% } %>
+  
     <h1 class="h3 mb-3 fw-normal">Sign in</h1>
 
     <div class="form-floating">
-- 
GitLab