From a28c293e87f835354391863f36e5ddc3d66fd2e4 Mon Sep 17 00:00:00 2001 From: flifloo Date: Sun, 26 Apr 2020 16:24:48 +0200 Subject: [PATCH] Beginning of user registration --- .gitignore | 3 +++ app.js | 28 +++++++++++++++++++++++++++- package.json | 1 + 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 4f7041d..041e35c 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,6 @@ node_modules package-lock.json +# Image Node data +users.json + diff --git a/app.js b/app.js index 4aabb95..080754f 100644 --- a/app.js +++ b/app.js @@ -1,7 +1,33 @@ let express = require("express"); -let morgan = require("morgan") +let morgan = require("morgan"); +let fs = require("fs"); +let rl = require("readline").createInterface({input: process.stdin, output: process.stdout, terminal: false}); +let passwordHash = require('password-hash'); let app = express(); + +if (!fs.existsSync("users.json")) { + fs.writeFileSync("users.json", "{}"); + console.log("Register first user"); + addUser(); +} else if (Object.keys(JSON.parse(fs.readFileSync("users.json"))).length === 0) { + console.log("No user found, adding a new one"); + addUser(); +} + +async function addUser() { + let username; + let password; + file = JSON.parse(fs.readFileSync("users.json")); + do { + username = await new Promise(resolve => rl.question("Username: ", resolve)); + } while (username in file || ["", null].indexOf(username) >= 0); + password = passwordHash.generate(await new Promise(resolve => rl.question("Password: ", resolve))); + file[username] = password; + fs.writeFileSync("users.json", JSON.stringify(file)); +} + + app.use(morgan("dev")) .use(express.static("public")) .set("view engine", "pug") diff --git a/package.json b/package.json index 11565d5..c69201f 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "dependencies": { "express": "^4.17.1", "morgan": "^1.10.0", + "password-hash": "^1.2.2", "pug": "^2.0.4" }, "author": "flifloo"