diff --git a/Server/controllers/authController.js b/Server/controllers/authController.js index 16eb6eb00..bbf676e8a 100644 --- a/Server/controllers/authController.js +++ b/Server/controllers/authController.js @@ -151,6 +151,29 @@ const userEditController = async (req, res, next) => { } }; +/** + * Checks to see if an admin account exists + * @async + * @param {Express.Request} req + * @param {Express.Response} res + * @returns {Promise} + */ + +const checkAdminController = async (req, res) => { + try { + const adminExists = await req.db.checkAdmin(req, res); + return res.status(200).json({ + success: true, + msg: successMessages.AUTH_ADMIN_EXISTS, + data: adminExists, + }); + } catch (error) { + error.service = SERVICE_NAME; + next(error); + return; + } +}; + /** * Returns a recovery token * @async @@ -238,6 +261,7 @@ module.exports = { registerController, loginController, userEditController, + checkAdminController, recoveryRequestController, validateRecoveryTokenController, resetPasswordController, diff --git a/Server/db/MongoDB.js b/Server/db/MongoDB.js index 0c9061594..da9bf6cba 100644 --- a/Server/db/MongoDB.js +++ b/Server/db/MongoDB.js @@ -171,6 +171,18 @@ const resetPassword = async (req, res) => { } }; +const checkAdmin = async (req, res) => { + try { + const admin = await UserModel.findOne({ role: "admin" }); + if (admin !== null) { + return true; + } + return false; + } catch (error) { + throw error; + } +}; + //**************************************** // Monitors //**************************************** @@ -510,6 +522,7 @@ module.exports = { requestRecoveryToken, validateRecoveryToken, resetPassword, + checkAdmin, getAllMonitors, getMonitorById, getMonitorsByUserId, diff --git a/Server/routes/authRoute.js b/Server/routes/authRoute.js index 0ccddc3d2..f9142a395 100644 --- a/Server/routes/authRoute.js +++ b/Server/routes/authRoute.js @@ -10,12 +10,14 @@ const { recoveryRequestController, validateRecoveryTokenController, resetPasswordController, + checkAdminController, } = require("../controllers/authController"); //Auth routes router.post("/register", upload.single("profileImage"), registerController); router.post("/login", loginController); router.post("/user/:userId", verifyJWT, userEditController); +router.get("/users/admin", checkAdminController); //Recovery routes router.post("/recovery/request", recoveryRequestController); diff --git a/Server/utils/messages.js b/Server/utils/messages.js index cb435757c..9ed03fdb6 100644 --- a/Server/utils/messages.js +++ b/Server/utils/messages.js @@ -56,6 +56,7 @@ const successMessages = { AUTH_CREATE_RECOVERY_TOKEN: "Recovery token created successfully", AUTH_VERIFY_RECOVERY_TOKEN: "Recovery token verified successfully", AUTH_RESET_PASSWORD: "Password reset successfully", + AUTH_ADMIN_CHECK: "Admin check completed successfully", // Check Controller CHECK_CREATE: "Check created successfully",