Skip to content

Instantly share code, notes, and snippets.

@writingdeveloper
Created February 1, 2021 15:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save writingdeveloper/6dc48aa0d1835357bf14669386ade5c5 to your computer and use it in GitHub Desktop.
Save writingdeveloper/6dc48aa0d1835357bf14669386ade5c5 to your computer and use it in GitHub Desktop.
index.js
const express = require('express');
const bodyParser = require("body-parser");
const path = require("path");
const {
base64,
Base64
} = require('js-base64');
const {
Shell,
PSCommand
} = require('node-powershell')
const router = express.Router();
router.use(bodyParser.urlencoded({
extended: false
}));
router.use(bodyParser.json());
router.use(express.static(path.join(__dirname, "public")));
/* Database Schema */
const db = require("../lib/db"); // DB Connection Module
const User = require('../lib/models/userModel');
const {
now
} = require('mongoose');
/* GET home page. */
router.get('/', function (req, res, next) {
res.render('index', {
title: 'Express'
});
});
router.get('/admin', (req, res) => {
User.find({}, (err, result) => {
if (err) throw err;
res.render('admin', {
dataArray: result
})
})
})
router.get('/login', (req, res) => {
User.find({}, (err, result) => {
if (err) throw err;
res.render('login', {
dataArray: result
})
})
})
router.get('/wrongpw', (req, res) => {
User.find({}, (err, result) => {
if (err) throw err;
res.render('wrongpw', {})
})
})
router.get('/register/:name', (req, res) => {
let name = req.params.name;
console.log(name);
User.findOneAndUpdate({
'name': name,
}, {
$set: {
registerStatus: '등록완료'
}
}, {
returnNewDocument: true
}, (err, doc) => {
if (err) throw err;
console.log(doc);
})
})
router.post('/login/submit', (req, res) => {
let name = req.body.name;
let password = req.body.password;
let encodedPassword = Base64.encode(password);
console.log(encodedPassword)
User.find({
'name': name,
'password': encodedPassword
}, (err, result) => {
console.log(result)
if (err) {
res.redirect(`/wrongpw`)
} else {
res.redirect(`/information/${result[0].id}`)
}
})
})
router.get(`/information/:name`, (req, res) => {
let name = req.params.id;
User.find({
'name': name
}, (err, dataArray) => {
if (err) throw err;
else {
console.log(dataArray);
res.render('information', {
dataArray
})
}
})
})
router.get(`/information/:name/modify`, (req, res) => {
let id = req.params.name;
User.find({
'name': name
}, (err, result) => {
if (err) throw err;
console.log(result)
})
})
/* 유저 삭제 라우터 (관리자 페이지) */
router.get(`/delete/:name`, (req, res) => {
let name = req.params.name;
User.deleteOne({
'name': name
}, (err, result) => {
if (err) throw err;
})
})
/* 유저 등록 라우터 */
router.get(`/success/:name`, (req, res) => {
let name = req.params.name;
User.find({
'name': name
}, (err, result) => {
if (err) throw err;
console.log(result)
res.render('success', {
name: name,
name: result[0].name
})
})
})
/* 등록 요청 라우터 */
router.post(`/submit`, async function (req, res) {
let name = req.body.name; // 실제 이름
let password = req.body.password; //패스워드
let passwordCheck = req.body.passwordCheck; // 패스워드 확인
let company = req.body.company; // 소속 회사
let registerStatus = false; // 등록 여부
let executives = req.body.executives; // 임원 여부
let registerDate = Date.now(); // 등록 시간
let ps = new Shell();
let cmd = new PSCommand(`$PASSWORD= ConvertTo-SecureString ?AsPlainText -Force -String ${password}`)
let script = new PSCommand(`New-LocalUser -Name "${name}" -FullName "${name}" -Description "${name}" -PasswordNeverExpires -Password $PASSWORD`)
ps.addCommand(cmd);
ps.addCommand(script);
ㅡㅛ
try {
if (password !== passwordCheck) { // 패스워드 폼 일치 확인
res.redirect('/') // 일치하지 않을경우 메인으로 Redirect
} else {
let encodedPassword = Base64.encode(password); // BASE64로 패스워드 암호화
/* 유저 생성 Query */
await User.create({
name,
password: encodedPassword,
company,
registerStatus,
executives,
registerDate
}, (err, result) => {
if (err) throw err;
})
res.redirect(`/success/${name}`) // 쿼리 작업 완료시
}
} catch (err) {
throw err;
}
})
module.exports = router;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment