import express from 'express';
import db from '../model/db.js';
const router = express.Router();
router.get('/login', (req, res) => {
const { msg } = req.query;
res.render('login', { msg });
});
router.post('/login', async (req, res) => {
const { userid, pwd } = req.body;
const [rows] = await db.execute('select * from member where userid = ? and pwd = sha2(?,256)', [userid, pwd]);
const member = rows[0];
if (!member) {
return res.redirect('/member/login?msg=fail');
}
req.session.userid = member.userid;
req.session.username = member.name;
req.session.user_type = member.user_type;
return res.redirect('/member/main');
});
router.get('/main', async (req, res) => {
if (!req.session || !req.session.userid) {
return res.redirect('/member/login?msg=authority');
}
res.render('main', { session: req.session });
});
router.get('/logout', (req, res) => {
req.session.destroy(() => {
res.redirect('/member/login?msg=logout');
});
});
router.get('/register', (req, res) => {
res.render('register');
});
router.post('/register', async (req, res) => {
const { userid, pwd, name, email } = req.body;
await db.execute('insert into member (userid, pwd, name, email, user_type) values (?, sha2(?,256), ?, ?, ?)', [userid, pwd, name, email, 'USER']);
res.redirect('/member/login?msg=success');
});
router.get('/list', async (req, res) => {
if (!req.session || req.session.user_type !== 'ADMIN') {
return res.redirect('/member/login?msg=authority');
}
const [rows] = await db.execute('select * from member');
res.render('list', { members: rows });
});
router.get('/:userid/edit', async (req, res) => {
if (!req.session || req.session.user_type !== 'ADMIN') {
return res.redirect('/member/login?msg=authority');
}
const { userid } = req.params;
const [rows] = await db.execute('select * from member where userid = ?', [userid]);
const member = rows[0];
if (!member) return res.redirect('/member/list');
res.render('edit', { member });
});
router.post('/update', async (req, res) => {
if (!req.session || req.session.user_type !== 'ADMIN') {
return res.redirect('/member/login?msg=authority');
}
const { userid, name, email, user_type } = req.body;
const normalized = String(user_type || 'USER').toLowerCase();
await db.execute('update member set name = ?, email = ?, user_type = ? where userid = ?', [name, email, normalized, userid]);
res.redirect('/member/list');
});
router.post('/remove', async (req, res) => {
if (!req.session || req.session.user_type !== 'ADMIN') {
return res.redirect('/member/login?msg=authority');
}
const { userid } = req.body;
await db.execute('delete from member where userid = ?', [userid]);
res.redirect('/member/list');
});
export default router;