Website init improvements

pull/2/head
Armored Dragon 2023-09-25 15:17:52 -05:00
parent e60f58a975
commit f762f817d5
5 changed files with 25 additions and 19 deletions

View File

@ -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}` };
}

View File

@ -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 });

View File

@ -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) {

View File

@ -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 };

View File

@ -8,8 +8,14 @@
<a class="nav-button" href="/blog">
<div>Blog</div>
</a>
<a class="nav-button" href="/projects">
<div>Projects</div>
<% if (user) { %>
<a class="nav-button" href="/author/<%= user.username %>">
<div>Profile</div>
</a>
<% } else {%>
<a class="nav-button" href="/login">
<div>Login</div>
</a>
<% } %>
</div>
</div>