Procházet zdrojové kódy

move initial admin setup to a middleware function

Pouria Ezzati před 1 rokem
rodič
revize
b7cdeba6ca

+ 13 - 0
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,

+ 0 - 14
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"

+ 2 - 0
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)
 );