Select Git revision
server.js 6.87 KiB
const express = require('express');
const path = require('path');
const bcrypt = require('bcryptjs');
const session = require('express-session');
const mysql = require('mysql2');
const app = express();
// การตั้งค่าการเชื่อมต่อกับฐานข้อมูล
const pool = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: 'proj3'
});
// ตั้งค่า view engine เป็น EJS
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'));
// ใช้ session สำหรับเก็บข้อมูลของผู้ใช้
app.use(session({
secret: 'your-secret-key',
resave: false,
saveUninitialized: true,
}));
// ให้บริการไฟล์จากโฟลเดอร์ public
app.use(express.static(path.join(__dirname, 'public')));
// รับข้อมูลจากฟอร์ม
app.use(express.urlencoded({ extended: true }));
// หน้าแรก
app.get('/', (req, res) => {
res.render('home');
});
// หน้า home (เปิดให้ทุกคนเข้าถึงได้)
app.get('/home', (req, res) => {
res.render('home');
});
// หน้า login
app.get('/login', (req, res) => {
res.render('login');
});
// ตรวจสอบการ login
app.post('/login', (req, res) => {
const { username, password } = req.body;
const query = 'SELECT * FROM users WHERE username = ?';
pool.query(query, [username], (err, results) => {
if (err) return res.send('Error occurred while logging in');
if (results.length > 0) {
bcrypt.compare(password, results[0].password, (err, isMatch) => {
if (err) return res.send('Error occurred while comparing password');
if (isMatch) {
req.session.username = username;
req.session.user_id = results[0].id;
res.redirect('/products');
} else {
res.render('login', { error: 'รหัสผ่านไม่ถูกต้อง' });
}
});
} else {
res.render('login', { error: 'ไม่พบผู้ใช้' });
}
});
});