52 lines
2.1 KiB
JavaScript
52 lines
2.1 KiB
JavaScript
const express = require('express');
|
|
const router = express.Router();
|
|
const { authenticateToken } = require('../middleware/auth');
|
|
const { auditLog } = require('../middleware/auditLogger');
|
|
const { validateGPS, validateAvailability } = require('../middleware/validator');
|
|
const {
|
|
getAllUsers,
|
|
getUserById,
|
|
createUser,
|
|
updateUser,
|
|
deleteUser,
|
|
restoreUser,
|
|
getDeletedUsers,
|
|
getPublicUsers,
|
|
updateAvailability,
|
|
updateGPS,
|
|
exportUsers,
|
|
importUsers,
|
|
bulkUpdateUsers,
|
|
bulkDeleteUsers,
|
|
uploadUserPhoto,
|
|
deleteUserPhoto,
|
|
getGeocodeByPostalCode
|
|
} = require('../controllers/userController');
|
|
|
|
// Public routes
|
|
router.get('/public/users', getPublicUsers);
|
|
router.get('/public/geocode', getGeocodeByPostalCode);
|
|
|
|
// Protected routes (require authentication)
|
|
router.get('/users', authenticateToken, getAllUsers);
|
|
router.get('/users/export', authenticateToken, auditLog('EXPORT', 'User'), exportUsers);
|
|
router.post('/users/import', authenticateToken, auditLog('IMPORT', 'User'), importUsers);
|
|
router.get('/users/deleted', authenticateToken, getDeletedUsers);
|
|
router.get('/users/:id', authenticateToken, getUserById);
|
|
router.post('/users', authenticateToken, auditLog('CREATE', 'User'), createUser);
|
|
router.put('/users/:id', authenticateToken, auditLog('UPDATE', 'User'), updateUser);
|
|
router.delete('/users/:id', authenticateToken, auditLog('DELETE', 'User'), deleteUser);
|
|
router.post('/users/:id/restore', authenticateToken, auditLog('RESTORE', 'User'), restoreUser);
|
|
router.put('/users/:id/availability', authenticateToken, auditLog('UPDATE', 'User'), validateAvailability, updateAvailability);
|
|
router.put('/users/:id/gps', authenticateToken, auditLog('UPDATE', 'User'), validateGPS, updateGPS);
|
|
|
|
// User photo
|
|
router.post('/users/:id/photo', authenticateToken, auditLog('UPDATE', 'User'), uploadUserPhoto);
|
|
router.delete('/users/:id/photo', authenticateToken, auditLog('UPDATE', 'User'), deleteUserPhoto);
|
|
|
|
// Bulk operations
|
|
router.patch('/users/bulk', authenticateToken, auditLog('BULK_UPDATE', 'User'), bulkUpdateUsers);
|
|
router.delete('/users/bulk', authenticateToken, auditLog('BULK_DELETE', 'User'), bulkDeleteUsers);
|
|
|
|
module.exports = router;
|