const express = require('express'); const router = express.Router(); const { registerUser, loginUser, getUserProfile, updateUserProfile, getUsers, checkUserExists, getUserById, updateUser, deleteUser, anonymizeUser, requestPasswordReset, resetPassword, activateAccount, revokeMySession, adminRevokeUserSessions, closeAccount, } = require('../controllers/userController'); const { protect, admin, supervisor, loginLimiter} = require('../middleware/authMiddleware'); // Public routes router.post('/', registerUser); router.post('/login', loginLimiter, loginUser); router.post('/forgot', requestPasswordReset); router.post('/reset', resetPassword); router.post('/activate', activateAccount); // Protected routes router.route('/profile') .get(protect, getUserProfile) .put(protect, updateUserProfile); router.post('/revoke-sessions', protect, revokeMySession); router.post('/close-account', protect, closeAccount); // Admin routes router.route('/') .get(protect, supervisor, getUsers); router.get('/check-exists', protect, supervisor, checkUserExists); router.route('/:id') .get(protect, admin, getUserById) .put(protect, admin, updateUser) .delete(protect, admin, deleteUser); router.post('/:id/revoke-sessions', protect, admin, adminRevokeUserSessions); router.post('/:id/anonymize', protect, admin, anonymizeUser); module.exports = router;