Last active
February 5, 2021 08:13
-
-
Save writingdeveloper/72c6cd656e2935749e9d76fad222b1f4 to your computer and use it in GitHub Desktop.
Part of 'Windows Local User Management' code
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 = require('js-base64'); | |
// const Shell = require('node-powershell'); | |
// var spawn = require("child_process").spawn, | |
// child; | |
const router = express.Router(); | |
/* PowerShell Constructor */ | |
// const ps = new Shell({ | |
// executionPolicy: 'Bypass', | |
// noProfile: true | |
// }); | |
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'); | |
/* 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', {}) | |
}) | |
}) | |
// const { | |
// exec | |
// } = require('child_process'); | |
var spawn = require("child_process").spawn, | |
child; | |
const fs = require('fs'); | |
/* Register Process Router */ | |
router.get('/register/:name', (req, res) => { | |
let name = req.params.name; | |
console.log(name); | |
/* Find password with password information */ | |
User.find({ | |
'name': name | |
}, (err, result) => { | |
if (err) throw err; | |
else { | |
console.log(result); | |
let password = Base64.decode(result[0].password) | |
console.log(password) | |
console.log(result[0].company[0]) | |
// [System.Console]::OutputEncoding = [System.Text.Encoding]::UTF8\n | |
// fs.writeFile('test.ps1', `$Password = ('sihung84265@' | ConvertTo-SecureString -asPlainText -Force) | |
// New-LocalUser "이상봉" -Password $Password -FullName "이상봉" -Description "이상봉" -PasswordNeverExpires | |
// echo '작업이 완료되었습니다.' | |
// Add-LocalGroupMember -Group "GEOMECEX" -Member "이상봉" | |
// echo 'end'`, (err) => { if (err) throw err; }); | |
// child = spawn("powershell.exe", ["C:\\Users\\이시형\\Downloads\\Project\\Company-Storage\\test.ps1"]); | |
// child.stdout.on("data", function (data) { | |
// console.log("Powershell Data: " + data); | |
// }); | |
// child.stderr.on("data", function (data) { | |
// console.log("Powershell Errors: " + data); | |
// }); | |
// child.on("exit", function () { | |
// console.log("Powershell Script finished"); | |
// }); | |
// child.stdin.end(); //end input | |
// const ps = new Shell({ | |
// executionPolicy: 'Bypass', | |
// noProfile: true | |
// }); | |
/* PowerShell Process */ | |
ps.addCommand(`[System.Console]::OutputEncoding = [System.Text.Encoding]::UTF8`) | |
ps.addCommand(`$Password = ('${password}' | ConvertTo-SecureString -asPlainText -Force)`) | |
ps.addCommand(`New-LocalUser "${name}" -Password $Password -FullName "${name}" -Description "${name}" -PasswordNeverExpires`); | |
ps.addCommand(`Add-LocalGroupMember -Group "${result[0].company[0]}" -Member "${name}"`) | |
ps.invoke() | |
.then(output => { | |
console.log(output); | |
}) | |
.catch(err => { | |
console.log(err); | |
}); | |
// exec(`[System.Console]::OutputEncoding = [System.Text.Encoding]::UTF8\n | |
// $Password = ('sihung84265@' | ConvertTo-SecureString -asPlainText -Force)\n | |
// New-LocalUser "이상봉" -Password $Password -FullName "이상봉" -Description "이상봉" -PasswordNeverExpires\n | |
// echo '작업이 완료되었습니다.'\n | |
// Add-LocalGroupMember -Group "GEOMECEX" -Member "이상봉"\n | |
// echo 'end'`, { | |
// 'shell': 'powershell.exe' | |
// }, (error, stdout, stderr) => { | |
// // do whatever with stdout | |
// if (error) { | |
// throw error; | |
// } else { | |
// console.log(stdout); | |
// } | |
// }) | |
// exec(`$Password = ('${password}' | ConvertTo-SecureString -asPlainText -Force)`, { | |
// 'shell': 'powershell.exe' | |
// }, (error, stdout, stderr) => { | |
// // do whatever with stdout | |
// if (error) { | |
// console.log(error) | |
// } else { | |
// console.log(stdout); | |
// } | |
// }) | |
} | |
/* MongoDB Update Query */ | |
// 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].name}`) | |
} | |
}) | |
}) | |
router.get(`/information/:name`, (req, res) => { | |
let name = req.params.name; | |
User.find({ | |
'name': name | |
}, (err, dataArray) => { | |
if (err) throw err; | |
else { | |
console.log(dataArray); | |
res.render('information', { | |
dataArray | |
}) | |
} | |
}) | |
}) | |
/* User information modify Router */ | |
router.post(`/information/:name/modify`, async function (req, res) { | |
let name = req.params.name; | |
let newPassword = req.body.password; | |
console.log('THIS IS LINE !!!!!!!!!!!!!!!!!!!!!') | |
let decodedName = decodeURIComponent(name) | |
console.log(decodedName); | |
try { | |
await User.findOneAndUpdate({ | |
'name': decodedName, | |
}, { | |
$set: { | |
password: Base64.encode(newPassword) | |
} | |
}, { | |
returnNewDocument: true | |
}, (err, doc) => { | |
if (err) throw err; | |
console.log(doc); | |
}) | |
} catch (err) { | |
throw err; | |
} | |
res.redirect(`/information/${decodedName}`) | |
}) | |
/* 유저 삭제 라우터 (관리자 페이지) */ | |
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; | |
console.log(name); | |
User.find({ | |
'name': name | |
}, (err, result) => { | |
if (err) throw err; | |
console.log(result) | |
res.render('success', { | |
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 registerDate = Date.now(); // 등록 시간 | |
console.log(company); | |
try { | |
if (password !== passwordCheck) { // 패스워드 폼 일치 확인 | |
res.redirect('/') // 일치하지 않을경우 메인으로 Redirect | |
} else { | |
let encodedPassword = Base64.encode(password); // BASE64로 패스워드 암호화 | |
/* 유저 생성 Query */ | |
await User.create({ | |
name, | |
password: encodedPassword, | |
company, | |
registerStatus, | |
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