Created
February 1, 2021 15:01
-
-
Save writingdeveloper/6dc48aa0d1835357bf14669386ade5c5 to your computer and use it in GitHub Desktop.
index.js
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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