diff --git a/controllers/loginController.js b/controllers/loginController.js index b5c3cd27b5f0151b9e7ba18f713be07ece918723..5e69712e2571388d082663277c31b2492598773c 100644 --- a/controllers/loginController.js +++ b/controllers/loginController.js @@ -7,7 +7,7 @@ module.exports = { }, loginUser: async (req, res) => { - const { email, password } = req.body; // เปลี่ยนจาก rpassword เป็น password เพื่อให้ชัดเจน + const { email, rpassword } = req.body; try { const [rows] = await pool.execute('SELECT * FROM users WHERE email = ?', [email]); if (rows.length === 0) { @@ -16,20 +16,18 @@ module.exports = { } const user = rows[0]; - - // ตรวจสอบรหัสผ่าน - const match = await bcrypt.compare(password, user.password); // เปลี่ยน rpassword เป็น password + const match = await bcrypt.compare(rpassword, user.password); if (match) { - req.session.userId = user.user_id; // ใช้ user_id แทน id - res.redirect('/'); // ถ้าการเข้าสู่ระบบสำเร็จจะ redirect ไปที่หน้า home + req.session.userId = user.id + req.session.userIdEmail = user.email; + res.redirect('/'); } else { req.flash('message', 'Password incorrect'); - return res.redirect('/login'); // ถ้ารหัสผ่านไม่ตรง + return res.redirect('/login'); } } catch (err) { console.error(err); - req.flash('message', 'Server error, please try again later'); - res.status(500).redirect('/login'); // ถ้าเกิดข้อผิดพลาดในการเชื่อมต่อฐานข้อมูล + res.status(500).send('Server error'); } } }; diff --git a/controllers/registerController.js b/controllers/registerController.js index 2eee95ba4e37a76867653c2eedc496e8d5aed42f..f2b683592f2579796230b4feab68d58a31d6d99f 100644 --- a/controllers/registerController.js +++ b/controllers/registerController.js @@ -1,22 +1,24 @@ -// ในไฟล์ registerController.js +const bcrypt = require('bcrypt'); +const pool = require('../db'); -exports.showRegisterPage = (req, res) => { - res.render('register'); // ส่งค่าไปยังไฟล์ EJS ที่เป็นหน้า register -}; +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.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'); + 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'); + } } }; diff --git a/views/login.ejs b/views/login.ejs index 30f7ae841a35e0e4801e619f5cc05c8d636b2692..3b22bb0be07420fee0c64f44dcaa65eb4a3cb7b8 100644 --- a/views/login.ejs +++ b/views/login.ejs @@ -129,32 +129,32 @@ </svg> <main class="form-signin w-100 m-auto"> - <% if (message) { %> - <div class="alert alert-danger"> - <%= message %> - </div> -<% } %> - -<form action="/user/login" method="POST"> - <h1 class="h3 mb-3 fw-normal">Please sign in</h1> + <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"> <label for="floatingInput">Email address</label> - <input type="email" class="form-control" id="floatingInput" name="email" placeholder="name@example.com"> + <input type="email" class="form-control" id="floatingInput" name="email" placeholder="name@example.com"> </div> <div class="form-floating"> <label for="floatingPassword">Password</label> - <input type="password" class="form-control" id="floatingPassword" name="password" placeholder="Password"> + <input type="password" class="form-control" id="floatingPassword" name="rpassword" placeholder="Password"> </div> <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 - </label> + <input class="form-check-input" type="checkbox" value="remember-me" id="flexCheckDefault"> + <label class="form-check-label" for="flexCheckDefault"> + Remember me + </label> </div> <button class="btn btn-primary w-100 py-2" type="submit">Sign in</button> -</form> + </form> </main> <script src="/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script> diff --git a/views/register.ejs b/views/register.ejs index bb3ef400eea06aa1a2608ed04825fa12a5d34f66..c6be3163a3e8247768c38f96eac45e0b83dece2a 100644 --- a/views/register.ejs +++ b/views/register.ejs @@ -130,36 +130,26 @@ <main class="form-signin w-100 m-auto"> -<% 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> + <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>