// /components/users/userRoutes.js const express = require('express'); const userController = require('./userController'); const { validateSignUp, validateCreateUserAdmin, validateUpdateUser, validateEnroll } = require('./userValidator'); const authMiddleware = require('../../middlewares/authMiddleware'); const perm = require('../../middlewares/permissionMiddleware'); const { PERMISSIONS } = require('../../constants/permissions'); const router = express.Router(); // User Scope (Self-Service) router.post('/user/sign-up', validateSignUp, userController.signUp); router.get('/user/get-self', authMiddleware, userController.getSelf); router.put('/user/update-self', authMiddleware, validateUpdateUser, userController.updateSelf); // Admin Scope router.post('/admin/create', authMiddleware, perm.requires(PERMISSIONS.USERS_CREATE), validateCreateUserAdmin, userController.createAdmin); router.get('/admin/get-all', authMiddleware, perm.requires(PERMISSIONS.USERS_READ), userController.getAll); router.get('/admin/search', authMiddleware, perm.requires(PERMISSIONS.USERS_SEARCH), userController.search); router.get('/admin/get-one/:id', authMiddleware, perm.requires(PERMISSIONS.USERS_READ), userController.getOne); router.put('/admin/update/:id', authMiddleware, perm.requires(PERMISSIONS.USERS_UPDATE), validateUpdateUser, userController.update); router.post('/admin/:id/reset-password-sms', authMiddleware, perm.requires(PERMISSIONS.USERS_UPDATE), userController.resetPasswordAndSendSms); router.delete('/admin/delete/:id', authMiddleware, perm.requires(PERMISSIONS.USERS_DELETE), userController.delete); router.post('/admin/:userId/enroll', authMiddleware, perm.requires(PERMISSIONS.USERS_ENROLL), validateEnroll, userController.enroll); module.exports = router;