관리자 아이디로 로그인 -> 관리자 페이지 로그인(관리자번호)
등록페이지 -> 등록할 회원 검색 -> 등록 순
CREATE TABLE admin (
admin_number INT PRIMARY KEY NOT NULL,
member_number INT NOT NULL,
manage_grade CHAR(1) NOT NULL DEFAULT 1,
boss_number INT,
created_at TIMESTAMP DEFAULT NOW()
);
const express = require('express');
const adminController = require('../controllers/admin/admin');
const routes = express.Router();
routes.get('/adminCheck', adminController.getCheck);
routes.post('/adminCheck', adminController.adminCheck);
routes.get('/registList', adminController.registList);
routes.get('/adminRegist', adminController.adminRegist);
routes.post('/adminRegist', adminController.searchMember);
routes.post('/adminRegistAction', adminController.adminRegistAction);
module.exports = routes;
exports.getCheck = (req, res, next) => {
res.render("admin/adminCheck", {
pageTitle: "adminCheck Page",
member: req.session.user ? req.session.user : "",
});
};
exports.adminCheck = (req, res, next) => {
let admin_number = req.body.admin_number;
let member_number = req.session.user.member_number;
Admin.checkAdmin(admin_number, member_number, (admin) => {
req.session.admin = admin;
if (!admin) {
console.log("관리자 로그인 오류 : " + err);
} else {
console.log("관리자 로그인 성공!!");
res.render("admin/adminIndex", {
pageTitle: "Welcome E-book Admin Page",
member: req.session.user,
admin: req.session.admin,
});
}
});
};
exports.registList = (req, res, next) => {
res.render("admin/registList", {
pageTitle: "E-Book Regist List",
member: req.session.user,
admin: req.session.admin,
});
};
exports.adminRegist = (req, res, next) => {
res.render("admin/regist/admin", {
pageTitle: "E-Book Regist Admin",
member: req.session.user,
admin: req.session.admin,
results: "",
});
};
exports.searchMember = (req, res, next) => {
let userid = req.body.userid;
if (userid) {
Admin.searchMember(userid, (result) => {
let member = result;
console.log(member);
res.render("admin/regist/admin", {
pageTitle: "E-Book Regist Admin",
member: req.session.user,
admin: req.session.admin,
results: member,
});
});
} else {
console.log("아이디를 입력해주세요.");
}
};
exports.adminRegistAction = (req, res, next) => {
let memberNumber = req.body.member_number;
let adminNumber = req.session.admin.admin_number;
Admin.adminRegistAction(adminNumber, memberNumber, (err) => {
if (err) {
console.log("등록 오류를 확인해주세요.");
} else {
res.render("admin/adminIndex", {
pageTitle: "Welcome E-book Admin Page",
member: req.session.user,
admin: req.session.admin,
});
}
});
};
static checkAdmin(adminNumber, memberNumber, cb) {
if (adminNumber) {
var sql = "SELECT * FROM admin WHERE admin_number = " + adminNumber;
connection.query(sql, (err, row, fields) => {
if (err) {
console.log("쿼리 1 에러 : " + err);
} else {
if (memberNumber != row[0].member_number) {
console.log("관리자 번호를 정확히 입력해주세요.");
} else {
console.log("관리자 로그인 성공!!");
cb(admin({ ...row[0] }));
// connection.end();
}
}
});
} else {
console.log("관리번호를 입력해주세요.");
}
}
static searchMember(userid, cb) {
if (userid) {
var sql = "SELECT * FROM member WHERE userid LIKE '%" + userid + "%'";
connection.query(sql, (err, row, fields) => {
if (err) {
console.log("쿼리 1 에러 : " + err);
} else {
if (!row) {
console.log("아이디를 확인해주세요.");
} else {
console.log("회원검색 성공!!");
cb(searchMember(row));
// connection.end();
}
}
});
} else {
console.log("아이디를 입력해주세요.");
}
}
static adminRegistAction(adminNumber, memberNumber, cb) {
if (adminNumber && memberNumber) {
let fourNumber = Math.floor(Math.random() * (9999 - 1000) + 1000);
console.log(fourNumber);
var adminSQL =
"INSERT INTO admin (admin_number, member_number, boss_number) VALUES (?, ?, ?)";
var adminParam = [fourNumber, memberNumber, adminNumber];
var memberSQL =
"UPDATE member SET admin_check = 1 WHERE member_number = " + memberNumber;
connection.beginTransaction((err) => {
if (err) {
console.log("관리자 트랜잭션 에러 :" + err);
} else {
connection.query(adminSQL, adminParam, (err, row, fields) => {
if (err) {
console.log("관리자 INSERT 구문 오류 : " + err);
connection.rollback();
} else {
connection.query(memberSQL, (err, row, fields) => {
if (err) {
console.log("멤버 UPDATE 구문 오류 : " + err);
connection.rollback();
} else {
console.log("관리자 등록 성공!!");
connection.commit();
cb();
connection.end();
}
});
}
});
}
});
} else {
console.log("등록자를 확인해주세요.");
}
}
<%- include('../includes/head-nav.ejs')%>
<div class="container px-4 px-lg-5">
<div class="row gx-4 gx-lg-5 align-items-center my-5 ">
<form action="/adminCheck" method="POST">
<label for="admin_number"> 관리자번호 </label>
<input type="text" name="admin_number" id="admin_number">
<button type="submit" class="btn btn-primary"> 들어가기 </button>
</form>
</div>
</div>
<%- include('../includes/footer.ejs')%>
<%- include('../admin/includes/admin-head-nav.ejs')%>
<div class="container px-4 px-lg-5">
<div class="row gx-4 gx-lg-5 align-items-center my-5 ">
<% if(admin.manage_grade == 2) { %>
<a href="/registList" class="btn btn-primary"> 등록 </a>
<% } %>
<a href="/adminManage" class="btn btn-warning"> 관리 </a>
</div>
</div>
<%- include('../admin/includes/admin-footer.ejs')%>
<%- include('../admin/includes/admin-head-nav.ejs')%>
<div class="container px-4 px-lg-5">
<div class="row gx-4 gx-lg-5 align-items-center my-5 ">
<ul class="navbar-nav ms-auto mb-2 mb-lg-0">
<li class="nav-item"><a class="nav-link active" aria-current="page" href="/adminRegist">관리자 등록</a></li>
</ul>
<ul class="navbar-nav ms-auto mb-2 mb-lg-0">
<li class="nav-item"><a class="nav-link active" aria-current="page" href="/adminRegist">작가 등록</a></li>
<li class="nav-item"><a class="nav-link active" aria-current="page" href="/adminRegist">이미지 등록</a></li>
<li class="nav-item"><a class="nav-link active" aria-current="page" href="/adminRegist">도서내용 등록</a></li>
<li class="nav-item"><a class="nav-link active" aria-current="page" href="/adminRegist">도서 등록</a></li>
</ul>
</div>
</div>
<%- include('../admin/includes/admin-footer.ejs')%>
<%- include('../../admin/includes/admin-head-nav.ejs')%>
<div class="container px-4 px-lg-5">
<div class="row gx-4 gx-lg-5 align-items-center my-5 ">
<form action="/adminRegist" method="POST">
<label for="searchMember">회원검색</label>
<input type="text" name="userid" id="userid" placeholder="회원 아이디를 입력해주세요">
<button type="submit" class="btn btn-primary">검색</button>
</form>
<% if(results) {%>
<table>
<tr>
<th>회원번호</th>
<th>이름</th>
<th>아이디</th>
<th>등록일</th>
<th>관리자여부</th>
<th>등록</th>
</tr>
<% for (result in results) { %>
<form action="/adminRegistAction" method="POST">
<tr>
<td><%= results[result].member_number %></td>
<td><%= results[result].username %></td>
<td><%= results[result].userid %></td>
<td><%= results[result].created_at %></td>
<td>
<% if(results[result].admin_check == 0) { %>
X
<% } else { %>
O
<% } %>
</td>
<input type="hidden" name="member_number" id="member_number" value="<%= results[result].member_number %>">
<td>
<% if(results[result].admin_check == 0) { %>
<button type="submit" class="btn btn-primary">등록</button>
<% } else { %>
<a class="btn btn-warning">관리자</a>
<% } %>
</td>
</tr>
</form>
<% } %>
</table>
<% } %>
</div>
</div>
<%- include('../../admin/includes/admin-footer.ejs')%>