diff --git a/server/handlers/helpers.handler.js b/server/handlers/helpers.handler.js index 0f9c264..ff53454 100644 --- a/server/handlers/helpers.handler.js +++ b/server/handlers/helpers.handler.js @@ -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, diff --git a/server/handlers/renders.handler.js b/server/handlers/renders.handler.js index 9e5a446..7c427c6 100644 --- a/server/handlers/renders.handler.js +++ b/server/handlers/renders.handler.js @@ -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" diff --git a/server/routes/renders.routes.js b/server/routes/renders.routes.js index 4c876e6..1c9ee2f 100644 --- a/server/routes/renders.routes.js +++ b/server/routes/renders.routes.js @@ -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) );