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, region: process.env.S3_REGION,
endpoint: process.env.S3_ENDPOINT, endpoint: process.env.S3_ENDPOINT,
}); });
const settings = require("../settings");
const persistent_setting = require("node-persist"); async function registerUser(username, password, options) {
persistent_setting.init({ dir: "data/" }); const new_user = await prisma.user.create({ data: { username: username, password: password, ...options } });
await settings.setSetupComplete();
async function registerUser(username, password) {
const new_user = await prisma.user.create({ data: { username: username, password: password } });
await persistent_setting.setItem("SETUP_COMPLETE", true);
if (new_user) return { success: true, message: `Successfully created ${new_user.username}` }; 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 form_valid = await validate.userRegistration(username, password); // Check form for errors
const is_setup_complete = await settings.setupComplete(); 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 // Register the user in the database
if (registration_allowed && form_valid.success) return await core.registerUser(username, password, { role: role }); 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; const is_setup_complete = (await settings.setupComplete()) || false;
if (!is_setup_complete) return response.redirect("/register"); 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) { 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) { 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) { async function admin(request, response) {
const reg_allowed = await settings.userRegistrationAllowed(); const reg_allowed = await settings.userRegistrationAllowed();
response.render("admin.ejs", { response.render("admin.ejs", { user: request.session.user || null, website_name: process.env.WEBSITE_NAME, settings: { registration_enabled: reg_allowed } });
website_name: process.env.WEBSITE_NAME,
settings: { registration_enabled: reg_allowed },
});
} }
async function registerPost(request, response) { async function registerPost(request, response) {

View File

@ -2,8 +2,13 @@ const persistent_setting = require("node-persist");
persistent_setting.init({ dir: "data/" }); persistent_setting.init({ dir: "data/" });
const setupComplete = async () => (await persistent_setting.getItem("SETUP_COMPLETE")) || false; 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)); 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"> <a class="nav-button" href="/blog">
<div>Blog</div> <div>Blog</div>
</a> </a>
<a class="nav-button" href="/projects"> <% if (user) { %>
<div>Projects</div> <a class="nav-button" href="/author/<%= user.username %>">
<div>Profile</div>
</a> </a>
<% } else {%>
<a class="nav-button" href="/login">
<div>Login</div>
</a>
<% } %>
</div> </div>
</div> </div>