Files
GPI/src/server/routes/userRoutes.ts

24 lines
920 B
TypeScript

import express from 'express';
import { syncUser, getCurrentUser, getAllUsers, updateUserRole, toggleBanUser, heartbeat, getActiveUsers, deleteUser } from '../controllers/userController.js';
import { extractUser, requireAdmin } from '../middleware/authMiddleware.js';
const router = express.Router();
// Sync user from Clerk (public - called on login)
router.post('/sync', syncUser);
// Get current user (requires extractUser middleware)
router.get('/me', extractUser, getCurrentUser);
// Heartbeat & Presence
router.post('/heartbeat', extractUser, heartbeat);
router.get('/active', extractUser, getActiveUsers);
// Admin-only routes
router.get('/', extractUser, requireAdmin, getAllUsers);
router.patch('/:id/role', extractUser, requireAdmin, updateUserRole);
router.patch('/:id/ban', extractUser, requireAdmin, toggleBanUser);
router.delete('/:id', extractUser, requireAdmin, deleteUser);
export default router;