import { Router } from "express"; import { verifyJWT } from "../middleware/verifyJWT.js"; import { verifyOwnership } from "../middleware/verifyOwnership.js"; import { isAllowed } from "../middleware/isAllowed.js"; import multer from "multer"; import User from "../db/models/User.js"; const upload = multer(); class AuthRoutes { constructor(authController) { this.router = Router(); this.authController = authController; this.initRoutes(); } initRoutes() { this.router.post( "/register", upload.single("profileImage"), this.authController.registerUser ); this.router.post("/login", this.authController.loginUser); this.router.put( "/user/:userId", upload.single("profileImage"), verifyJWT, this.authController.editUser ); this.router.get("/users/superadmin", this.authController.checkSuperadminExists); this.router.get( "/users", verifyJWT, isAllowed(["admin", "superadmin"]), this.authController.getAllUsers ); this.router.delete( "/user/:userId", verifyJWT, verifyOwnership(User, "userId"), this.authController.deleteUser ); // Recovery routes this.router.post("/recovery/request", this.authController.requestRecovery); this.router.post("/recovery/validate", this.authController.validateRecovery); this.router.post("/recovery/reset/", this.authController.resetPassword); } getRouter() { return this.router; } } export default AuthRoutes;