Lifesoft

MemberService.js

파일 경로: service/MemberService.js
코드 1
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;