Skip to content

Instantly share code, notes, and snippets.

@writingdeveloper
Last active February 5, 2021 08:13
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/72c6cd656e2935749e9d76fad222b1f4 to your computer and use it in GitHub Desktop.
Save writingdeveloper/72c6cd656e2935749e9d76fad222b1f4 to your computer and use it in GitHub Desktop.
Part of 'Windows Local User Management' code
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