diff --git a/src/middlewares/news/updateNews.ts b/src/middlewares/news/updateNews.ts
index baa113bf8ba57c9124634ce61ce1785083481541..73f608152be1658fa7755f9501aee61551a25517 100644
--- a/src/middlewares/news/updateNews.ts
+++ b/src/middlewares/news/updateNews.ts
@@ -4,6 +4,9 @@ import { NextFunction, Request, Response } from "express";
 // Valid fields to update
 const validFields = ["title", "text"];
 
+/**
+ * Update a News Object
+ */
 const updateNews = () => async (
   req: Request,
   res: Response,
diff --git a/src/middlewares/user/getOwnUser.ts b/src/middlewares/user/setOwnUserId.ts
similarity index 77%
rename from src/middlewares/user/getOwnUser.ts
rename to src/middlewares/user/setOwnUserId.ts
index 2983521805c583e19cb84863626cce304d788ab9..160663fc53881f399acb1f85b42523665a539030 100644
--- a/src/middlewares/user/getOwnUser.ts
+++ b/src/middlewares/user/setOwnUserId.ts
@@ -8,8 +8,12 @@ import Warning from "../../models/WarningSchema";
  * Middleware to set req.params.id to the current users id.
  * getUser() middleware should be called after this.
  */
-const getOwnUser = () => (req: Request, res: Response, next: NextFunction) => {
+const setOwnUserId = () => (
+  req: Request,
+  res: Response,
+  next: NextFunction
+) => {
   req.params.id = req.session.user!.id!;
   next();
 };
-export default getOwnUser;
+export default setOwnUserId;
diff --git a/src/middlewares/warning/addWarning.ts b/src/middlewares/warning/addWarning.ts
index eb253b0aff0bdc6dc8cf2564362d08f190b85afb..200e14ff063fe4c07a111514aa9cb348e085239d 100644
--- a/src/middlewares/warning/addWarning.ts
+++ b/src/middlewares/warning/addWarning.ts
@@ -3,61 +3,49 @@ import { NextFunction, Request, Response } from "express";
 import Profile from "../../models/ProfileSchema";
 import { ValidationError } from "../utils/ValidationError";
 import Warning from "../../models/WarningSchema";
+import { validateFields } from "../utils/validateFields";
 import warningsRoute from "../../routes/warning";
 
+const fields = [{ name: "text", required: true }];
+
 const addWarning = () => async (
   req: Request,
   res: Response,
   next: NextFunction
 ) => {
-  try {
-    const warningReceiver = await Profile.findById(req.params.userId).exec();
-    if (!warningReceiver) return res.status(400).send("Profile not found");
-
-    const warning = new Warning();
-
-    // Check required fields
-    const fields = [{ name: "text", required: true }];
-    fields.forEach((field) => {
-      const value = req.body[field.name];
-      if (field.required && !value) {
-        res.status(400);
-        throw new ValidationError(400, `Field: {${field.name}} is required!`);
-      }
-      if (value) warning.set(field.name, value);
-    });
-
-    warning.receiver = warningReceiver.id;
-    warning.date = new Date();
-    warning.given_by = {
-      _id: res.data.profile!.id,
-      name: res.data.profile!.name,
-    };
-
-    await warning.save((err) => {
-      if (err) {
-        return res.status(400);
-      }
-    });
-
-    warningReceiver.warningIds = [
-      ...warningReceiver.warningIds,
-      String(warning.id),
-    ];
-    await warningReceiver.save((err) => {
-      if (err) {
-        warning.remove();
-        return res.status(400);
-      }
-    });
-    res.data.warning = warning;
-    return next();
-  } catch (error) {
-    if (error instanceof ValidationError) {
-      const { code, message } = error;
-      return res.status(code).send({ message });
+  const warningReceiver = await Profile.findById(req.params.userId).exec();
+  if (!warningReceiver) return res.status(400).send("Profile not found");
+
+  const warning = new Warning();
+
+  // Validate and set fields from request body
+  validateFields({ fields, reqBody: req.body });
+  fields.forEach((field) => {
+    const value = req.body[field.name];
+    if (value) warning.set(field.name, req.body[field.name]);
+  });
+
+  warning.receiver = warningReceiver.id!;
+  warning.date = new Date();
+  warning.given_by = {
+    _id: req.session.user!.id!,
+    name: req.session.user!.name!,
+  };
+
+  await warning.save();
+
+  warningReceiver.warningIds = [
+    ...warningReceiver.warningIds,
+    String(warning.id),
+  ];
+  await warningReceiver.save(async (err) => {
+    if (err) {
+      await warning.remove();
+      throw err;
     }
-  }
+  });
+  res.data.warning = warning;
+  next();
 };
 
 export default addWarning;
diff --git a/src/middlewares/warning/deleteWarning.ts b/src/middlewares/warning/deleteWarning.ts
index 62c41ee1ccfd63c7a9d863de82759880436ea510..dbc566c4d10dcf1dd94fdc21a934a79d8f074c33 100644
--- a/src/middlewares/warning/deleteWarning.ts
+++ b/src/middlewares/warning/deleteWarning.ts
@@ -3,23 +3,18 @@ import { NextFunction, Request, Response } from "express";
 import Profile from "../../models/ProfileSchema";
 import Warning from "../../models/WarningSchema";
 
-const deleteWarning = () => (
+const deleteWarning = () => async (
   req: Request,
   res: Response,
   next: NextFunction
 ) => {
-  Warning.findByIdAndDelete(req.params.warningId, async (error, result) => {
-    if (!error) {
-      await Profile.updateOne(
-        { _id: result?.receiver },
-        { $pull: { warningIds: result?._id } }
-      );
-      res.status(204);
-      res.json({});
-    } else {
-      console.warn(error);
-    }
-  });
+  const warning = await Warning.findByIdAndRemove(req.params.warningId);
+
+  await Profile.updateOne(
+    { _id: warning?.receiver },
+    { $pull: { warningIds: warning?._id } }
+  );
+  res.status(204).send();
 };
 
 export default deleteWarning;
diff --git a/src/middlewares/warning/getUserWarningsList.ts b/src/middlewares/warning/getUserWarningsList.ts
index fa236f145c715403df01a748d5f7e4ad5a6179d3..06303340fe657e4b58079ccaf24b04d888e6d9a9 100644
--- a/src/middlewares/warning/getUserWarningsList.ts
+++ b/src/middlewares/warning/getUserWarningsList.ts
@@ -3,27 +3,19 @@ import { NextFunction, Request, Response } from "express";
 import Profile from "../../models/ProfileSchema";
 import Warning from "../../models/WarningSchema";
 
-const getUserWarningsList = () => (
+const getUserWarningsList = () => async (
   req: Request,
   res: Response,
   next: NextFunction
 ) => {
-  Profile.findById(req.params.userId, async (error, profile) => {
-    if (error) {
-      console.warn(error);
-      res.status(400);
-    } else {
-      res.status(200);
+  if (!res.data.profile)
+    return res.status(404).json({ message: "User not found" });
 
-      if (!profile) return res.status(404).send("User not found");
-
-      const warnings = await Warning.find({
-        _id: { $in: profile?.warningIds },
-      }).exec();
-      res.data.warnings = warnings;
-    }
-    next();
+  res.data.warnings = await Warning.find({
+    _id: { $in: res.data.profile?.warningIds },
   });
+
+  next();
 };
 
 export default getUserWarningsList;
diff --git a/src/middlewares/warning/getWarning.ts b/src/middlewares/warning/getWarning.ts
index 92383e00d87a98fa9ca72084b89981dfba967d11..a529ad705c2270a20b27f56b61514fa858e472c9 100644
--- a/src/middlewares/warning/getWarning.ts
+++ b/src/middlewares/warning/getWarning.ts
@@ -2,17 +2,13 @@ import { NextFunction, Request, Response } from "express";
 
 import Warning from "../../models/WarningSchema";
 
-const getWarning = () => (req: Request, res: Response, next: NextFunction) => {
-  Warning.findById(req.params.warningId, (error, warning) => {
-    if (error) {
-      console.warn(error);
-      res.status(400);
-    } else {
-      res.status(200);
-      res.data.warning = warning;
-    }
-    next();
-  });
+const getWarning = () => async (
+  req: Request,
+  res: Response,
+  next: NextFunction
+) => {
+  res.data.warning = await Warning.findById(req.params.warningId).lean().exec();
+  next();
 };
 
 export default getWarning;
diff --git a/src/middlewares/warning/responseWarning.ts b/src/middlewares/warning/responseWarning.ts
index c66ffb3724b02467608666aa5f5fa5f83ef15112..e4bbb7c0343081e4e4323188705a2a997df889b7 100644
--- a/src/middlewares/warning/responseWarning.ts
+++ b/src/middlewares/warning/responseWarning.ts
@@ -2,10 +2,9 @@ import { NextFunction, Request, Response, response } from "express";
 
 const responseWarning = () => (req: Request, res: Response) => {
   if (!res.data.warning) {
-    res.status(404).json({ message: "Warning not found!" });
-  } else {
-    res.json(res.data.warning);
+    return res.status(404).json({ message: "Warning not found!" });
   }
+  res.json(res.data.warning);
 };
 
 export default responseWarning;
diff --git a/src/middlewares/warning/responseWarningList.ts b/src/middlewares/warning/responseWarningList.ts
index 8323a6f8e783437c2bc6deba571ae074ab0e7db0..432a60a5577704941c63ac23436ca8c6f3e13b85 100644
--- a/src/middlewares/warning/responseWarningList.ts
+++ b/src/middlewares/warning/responseWarningList.ts
@@ -1,7 +1,7 @@
 import { NextFunction, Request, Response, response } from "express";
 
 const responseWarningList = () => (req: Request, res: Response) => {
-  res.json(res.data.warnings);
+  return res.json(res.data.warnings);
 };
 
 export default responseWarningList;
diff --git a/src/middlewares/warning/updateWarning.ts b/src/middlewares/warning/updateWarning.ts
index 89aca96b05ffe5bff9cc3a66d4b6a29b354bf81e..722f4c4550fab32a94717abd23477d76514b05a9 100644
--- a/src/middlewares/warning/updateWarning.ts
+++ b/src/middlewares/warning/updateWarning.ts
@@ -5,32 +5,23 @@ import Warning from "../../models/WarningSchema";
 // Valid fields to update
 const validFields = ["text"];
 
-const updateWarning = () => (
+const updateWarning = () => async (
   req: Request,
   res: Response,
   next: NextFunction
 ) => {
-  Warning.findOne({ _id: req.params.warningId }, async (error, warning) => {
-    if (error) {
-      res.status(400);
-    } else {
-      if (!!warning) {
-        validFields.forEach((field) => {
-          const value = req.body[field];
-          if (value) warning.set(field, value);
-        });
-        await warning.save((error, warning) => {
-          if (!!error) {
-            console.error(error);
-            return res.status(500).send("Couldn't update the warning");
-          }
-        });
-        res.status(200);
-        res.data.warning = warning;
-      }
-    }
-    next();
-  });
+  const warning = await Warning.findById(req.params.warnmingId).exec();
+
+  if (warning) {
+    validFields.forEach((field) => {
+      const value = req.body[field];
+      if (value) warning.set(field, value);
+    });
+    await warning.save();
+  }
+  res.data.warning = warning;
+
+  next();
 };
 
 export default updateWarning;
diff --git a/src/routes/auth.ts b/src/routes/auth.ts
index 532eb47a0d7bc72f2e6143957d4fc08599bea3b8..1202f644070fe274bffa1637f1ce052217406781 100644
--- a/src/routes/auth.ts
+++ b/src/routes/auth.ts
@@ -1,6 +1,7 @@
 import { Application } from "express";
 import complete from "../middlewares/auth/complete";
 import isAuthenticated from "../middlewares/auth/isAuthenticated";
+import isLoggedIn from "../middlewares/auth/isLoggedIn";
 import login from "../middlewares/auth/login";
 import logout from "../middlewares/auth/logout";
 
@@ -9,7 +10,7 @@ const authRoute = (app: Application): void => {
 
   app.get("/api/v1/complete", complete());
 
-  app.get("/api/v1/logout", isAuthenticated(), logout());
+  app.get("/api/v1/logout", isLoggedIn(), logout());
 };
 
 export default authRoute;
diff --git a/src/routes/file.ts b/src/routes/file.ts
index 1b851463e0c70089d322e00b86a65e026fd5470b..7546ec6af282a0553d61f41af04eba529a823de6 100644
--- a/src/routes/file.ts
+++ b/src/routes/file.ts
@@ -2,14 +2,14 @@ import { Application } from "express";
 import cardImageStorage from "../middlewares/files/card/cardImageStorage";
 import { fileFilter } from "../middlewares/files/fileFilter";
 import getCardImage from "../middlewares/files/card/getCardImage";
-import getOwnUser from "src/middlewares/user/getOwnUser";
 import getProfilePicture from "../middlewares/files/profile/getProfilePicture";
-import getUser from "src/middlewares/user/getUser";
+import getUser from "../middlewares/user/getUser";
 import handleFileValidationError from "../middlewares/files/handleFileValidationError";
 import isAuthenticated from "../middlewares/auth/isAuthenticated";
 import multer from "multer";
 import profilePictureStorage from "../middlewares/files/profile/profilePictureStorage";
 import responseCardImage from "../middlewares/files/card/responseCardImage";
+import setOwnUserId from "../middlewares/user/setOwnUserId";
 import uploadCardImage from "../middlewares/files/card/uploadCardImage";
 import uploadProfilePicture from "../middlewares/files/profile/uploadProfilePicture";
 
@@ -34,7 +34,7 @@ const fileRoute = (app: Application): void => {
   app.get(
     "/api/v1/files/profile",
     isAuthenticated(),
-    getOwnUser(),
+    setOwnUserId(),
     getUser(),
     getProfilePicture()
   );
diff --git a/src/routes/user.ts b/src/routes/user.ts
index c78a861dad85dd8c7e567295e83815e9bb361e0c..fe249ad3757c544caea598832a7838d477811910 100644
--- a/src/routes/user.ts
+++ b/src/routes/user.ts
@@ -5,7 +5,6 @@ import deleteUser from "../middlewares/user/deleteUser";
 import deleteWarning from "../middlewares/warning/deleteWarning";
 import emptyResponse from "../middlewares/utils/emptyResponse";
 import getCardImage from "../middlewares/files/card/getCardImage";
-import getOwnUser from "../middlewares/user/getOwnUser";
 import getUser from "../middlewares/user/getUser";
 import getUserCard from "../middlewares/files/card/getUserCard";
 import getUsersList from "../middlewares/user/getUsersList";
@@ -14,6 +13,7 @@ import getWarningsList from "../middlewares/warning/getUserWarningsList";
 import isAuthenticated from "../middlewares/auth/isAuthenticated";
 import responseUser from "../middlewares/user/responseUser";
 import responseUserList from "../middlewares/user/responseUserList";
+import setOwnUserId from "../middlewares/user/setOwnUserId";
 import updateUser from "../middlewares/user/updateUser";
 import updateWarning from "../middlewares/warning/updateWarning";
 
@@ -27,12 +27,17 @@ const usersRoute = (app: Application): void => {
 
   app.post("/api/v1/users", addUser(), responseUser());
 
-  app.get("/api/v1/users/me", isAuthenticated(), getOwnUser(), responseUser());
+  app.get(
+    "/api/v1/users/me",
+    isAuthenticated(),
+    setOwnUserId(),
+    responseUser()
+  );
 
   app.get(
     "/api/v1/users/me/card",
     isAuthenticated(),
-    getOwnUser(),
+    setOwnUserId(),
     getCardImage(),
     getUserCard()
   );
diff --git a/src/routes/warning.ts b/src/routes/warning.ts
index 67f6d46f4542608fd8e80b3396bd614fb5b45228..389f2131d1cd88b59baa10f5cb097d92082f51f4 100644
--- a/src/routes/warning.ts
+++ b/src/routes/warning.ts
@@ -1,12 +1,12 @@
 import { Application } from "express";
 import addWarning from "../middlewares/warning/addWarning";
 import deleteWarning from "../middlewares/warning/deleteWarning";
-import getOwnUser from "../middlewares/user/getOwnUser";
 import getUserWarningsList from "../middlewares/warning/getUserWarningsList";
 import getWarning from "../middlewares/warning/getWarning";
 import isAuthenticated from "../middlewares/auth/isAuthenticated";
 import responseWarning from "../middlewares/warning/responseWarning";
 import responseWarningList from "../middlewares/warning/responseWarningList";
+import setOwnUserId from "../middlewares/user/setOwnUserId";
 import updateWarning from "../middlewares/warning/updateWarning";
 
 const warningsRoute = (app: Application): void => {
@@ -27,7 +27,7 @@ const warningsRoute = (app: Application): void => {
   app.post(
     "/api/v1/warnings/user/:userId",
     isAuthenticated(),
-    getOwnUser(),
+    setOwnUserId(),
     addWarning(),
     responseWarning()
   );