Gitlab@Informatics

Skip to content
Snippets Groups Projects
Commit 8c32468d authored by 65160381's avatar 65160381
Browse files

Update 4 files

- /index.js
- /controllers/registerController.js
- /controllers/loginController.js
- /views/register.ejs
parent 9ddc5bf9
No related branches found
No related tags found
No related merge requests found
Pipeline #569 passed with warnings
......@@ -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'); // ถ้าเกิดข้อผิดพลาดในการเชื่อมต่อฐานข้อมูล
}
}
};
const bcrypt = require('bcrypt');
const pool = require('../db');
// ในไฟล์ registerController.js
module.exports = {
showRegisterPage: (req, res) => {
res.render('register', { message: req.flash('message') });
},
exports.showRegisterPage = (req, res) => {
res.render('register'); // ส่งค่าไปยังไฟล์ EJS ที่เป็นหน้า register
};
registerUser: async (req, res) => {
exports.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]);
// ตรวจสอบข้อมูล เช่น ชื่อผู้ใช้และรหัสผ่าน
// สมมติว่าเราทำการเก็บข้อมูลผู้ใช้ใน DB
req.flash('message', 'User registered successfully. Please log in.');
try {
// ตัวอย่างการสมัคร (สมมติว่ามีการเก็บข้อมูลใน DB)
// สมมติว่าผู้ใช้สมัครสำเร็จ
req.flash('messages', 'Registration successful!');
res.redirect('/login');
} catch (err) {
console.error('Error inserting user:', err);
res.status(500).send('Error occurred');
}
} catch (error) {
req.flash('messages', 'Error occurred during registration. Please try again later.');
res.redirect('/register');
}
};
......@@ -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, () => {
......
......@@ -129,6 +129,17 @@
</svg>
<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>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment