move initial admin setup to a middleware function

This commit is contained in:
Pouria Ezzati 2025-01-04 11:18:32 +03:30
parent ab10fe8291
commit b7cdeba6ca
3 changed files with 15 additions and 14 deletions

View File

@ -3,6 +3,7 @@ const { rateLimit: expressRateLimit } = require("express-rate-limit");
const { validationResult } = require("express-validator");
const { CustomError } = require("../utils");
const query = require("../queries");
const redis = require("../redis");
const env = require("../env");
@ -122,7 +123,19 @@ function rateLimit(params) {
});
}
// redirect to create admin page if the kutt instance is ran for the first time
async function adminSetup(req, res, next) {
const isThereAUser = req.user || (await query.user.findAny());
if (isThereAUser) {
next();
return;
}
res.redirect("/create-admin");
}
module.exports = {
adminSetup,
error,
parseQuery,
rateLimit,

View File

@ -9,14 +9,6 @@ const env = require("../env");
**/
async function homepage(req, res) {
// redirect to create admin page if the kutt instance is ran for the first time
const isThereAUser = await query.user.findAny();
if (!isThereAUser) {
res.redirect("/create-admin");
return;
}
// render homepage if none above is true
res.render("homepage", {
title: "Modern open source URL shortener",
});
@ -27,12 +19,6 @@ async function login(req, res) {
res.redirect("/");
return;
}
const isThereAUser = await query.user.findAny();
if (!isThereAUser) {
res.redirect("/create-admin");
return;
}
res.render("login", {
title: "Log in or sign up"

View File

@ -13,6 +13,7 @@ const router = Router();
router.get(
"/",
asyncHandler(auth.jwtLoosePage),
asyncHandler(helpers.adminSetup),
asyncHandler(locals.user),
asyncHandler(renders.homepage)
);
@ -20,6 +21,7 @@ router.get(
router.get(
"/login",
asyncHandler(auth.jwtLoosePage),
asyncHandler(helpers.adminSetup),
asyncHandler(renders.login)
);