yet-another-blog/backend/page_scripts.js

35 lines
1.4 KiB
JavaScript

const internal = require("./core/internal_api");
const bcrypt = require("bcrypt");
const persistent_setting = require("node-persist");
persistent_setting.init({ dir: "data/" });
async function index(request, response) {
// Check if the master admin has been created
const is_setup_complete = (await persistent_setting.getItem("SETUP_COMPLETE")) || false;
if (!is_setup_complete) return response.redirect("/register");
response.render("index.ejs", { website_name: process.env.WEBSITE_NAME });
}
function register(request, response) {
response.render("register.ejs", { website_name: process.env.WEBSITE_NAME });
}
function login(request, response) {
response.render("login.ejs", { website_name: process.env.WEBSITE_NAME });
}
async function registerPost(request, response) {
const hashedPassword = await bcrypt.hash(request.body.password, 10); // Hash the password for security :^)
response.json(await internal.registerUser(request.body.username, hashedPassword));
}
async function loginPost(request, response) {
const login = await internal.loginUser(request.body.username, request.body.password);
const password_match = await bcrypt.compare(request.body.password, login.data.password);
if (!password_match) return { success: false, message: "Incorrect password" };
request.session.user = { username: login.data.username, id: login.data.id };
response.json({ success: true });
}
module.exports = { index, register, login, registerPost, loginPost };