diff --git a/backend/core/core.js b/backend/core/core.js index 4c790b7..dce8d11 100644 --- a/backend/core/core.js +++ b/backend/core/core.js @@ -12,13 +12,11 @@ const s3 = new S3Client({ region: process.env.S3_REGION, endpoint: process.env.S3_ENDPOINT, }); +const settings = require("../settings"); -const persistent_setting = require("node-persist"); -persistent_setting.init({ dir: "data/" }); - -async function registerUser(username, password) { - const new_user = await prisma.user.create({ data: { username: username, password: password } }); - await persistent_setting.setItem("SETUP_COMPLETE", true); +async function registerUser(username, password, options) { + const new_user = await prisma.user.create({ data: { username: username, password: password, ...options } }); + await settings.setSetupComplete(); if (new_user) return { success: true, message: `Successfully created ${new_user.username}` }; } diff --git a/backend/core/internal_api.js b/backend/core/internal_api.js index ae5cf82..ea3b2d7 100644 --- a/backend/core/internal_api.js +++ b/backend/core/internal_api.js @@ -7,7 +7,7 @@ async function registerUser(username, password) { const form_valid = await validate.userRegistration(username, password); // Check form for errors const is_setup_complete = await settings.setupComplete(); - let role = is_setup_complete ? "ADMIN" : null; + let role = is_setup_complete ? undefined : "ADMIN"; // Register the user in the database if (registration_allowed && form_valid.success) return await core.registerUser(username, password, { role: role }); diff --git a/backend/page_scripts.js b/backend/page_scripts.js index e16b32c..032db5c 100644 --- a/backend/page_scripts.js +++ b/backend/page_scripts.js @@ -7,21 +7,18 @@ async function index(request, response) { const is_setup_complete = (await settings.setupComplete()) || false; if (!is_setup_complete) return response.redirect("/register"); - response.render("index.ejs", { website_name: process.env.WEBSITE_NAME }); + response.render("index.ejs", { user: request.session.user || null, website_name: process.env.WEBSITE_NAME }); } function register(request, response) { - response.render("register.ejs", { website_name: process.env.WEBSITE_NAME }); + response.render("register.ejs", { user: request.session.user || null, website_name: process.env.WEBSITE_NAME }); } function login(request, response) { - response.render("login.ejs", { website_name: process.env.WEBSITE_NAME }); + response.render("login.ejs", { user: request.session.user || null, website_name: process.env.WEBSITE_NAME }); } async function admin(request, response) { const reg_allowed = await settings.userRegistrationAllowed(); - response.render("admin.ejs", { - website_name: process.env.WEBSITE_NAME, - settings: { registration_enabled: reg_allowed }, - }); + response.render("admin.ejs", { user: request.session.user || null, website_name: process.env.WEBSITE_NAME, settings: { registration_enabled: reg_allowed } }); } async function registerPost(request, response) { diff --git a/backend/settings.js b/backend/settings.js index e4d77a7..04d63bf 100644 --- a/backend/settings.js +++ b/backend/settings.js @@ -2,8 +2,13 @@ const persistent_setting = require("node-persist"); persistent_setting.init({ dir: "data/" }); const setupComplete = async () => (await persistent_setting.getItem("SETUP_COMPLETE")) || false; -const userRegistrationAllowed = async () => (await persistent_setting.getItem("REGISTRATION_ALLOWED")) == "true"; - +const userRegistrationAllowed = async () => { + const setting = await persistent_setting.getItem("REGISTRATION_ALLOWED"); + if (typeof setting == "undefined") return true; + console.log(setting); + return setting == "true"; +}; +const setSetupComplete = async () => await persistent_setting.setItem("SETUP_COMPLETE", "true"); const setUserRegistrationAllowed = (new_value) => persistent_setting.setItem("REGISTRATION_ALLOWED", String(new_value)); -module.exports = { setupComplete, userRegistrationAllowed, setUserRegistrationAllowed }; +module.exports = { setupComplete, userRegistrationAllowed, setSetupComplete, setUserRegistrationAllowed }; diff --git a/frontend/views/partials/header.ejs b/frontend/views/partials/header.ejs index b836f18..6f26d97 100644 --- a/frontend/views/partials/header.ejs +++ b/frontend/views/partials/header.ejs @@ -8,8 +8,14 @@
Blog
- -
Projects
+ <% if (user) { %> +
+
Profile
+ <% } else {%> + +
Login
+
+ <% } %>