jagd-apps/drohnenfuehrer/backend/routes/userRoutes.js

50 lines
2.0 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
} = require('../controllers/userController');
// Public route
router.get('/public/users', getPublicUsers);
// 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;