50 lines
1.3 KiB
JavaScript
50 lines
1.3 KiB
JavaScript
import express from 'express';
|
|
import * as adminController from '../controllers/admin.controller.js';
|
|
import { authenticate } from '../middlewares/auth/authMiddleware.js';
|
|
import { requireAdmin } from '../middlewares/auth/roleMiddleware.js';
|
|
import { validateBody, validateParams } from '../middlewares/security/validateInput.js';
|
|
import { createUserSchema, changeRoleSchema } from '../validators/auth.validators.js';
|
|
import { z } from 'zod';
|
|
|
|
const router = express.Router();
|
|
|
|
/**
|
|
* Všetky admin routes vyžadujú autentifikáciu a admin rolu
|
|
*/
|
|
router.use(authenticate);
|
|
router.use(requireAdmin);
|
|
|
|
/**
|
|
* User management
|
|
*/
|
|
|
|
// Vytvorenie nového usera
|
|
router.post('/users', validateBody(createUserSchema), adminController.createUser);
|
|
|
|
// Zoznam všetkých userov
|
|
router.get('/users', adminController.getAllUsers);
|
|
|
|
// Získanie konkrétneho usera
|
|
router.get(
|
|
'/users/:userId',
|
|
validateParams(z.object({ userId: z.string().uuid() })),
|
|
adminController.getUserById
|
|
);
|
|
|
|
// Zmena role usera
|
|
router.patch(
|
|
'/users/:userId/role',
|
|
validateParams(z.object({ userId: z.string().uuid() })),
|
|
validateBody(z.object({ role: z.enum(['admin', 'member']) })),
|
|
adminController.changeUserRole
|
|
);
|
|
|
|
// Zmazanie usera
|
|
router.delete(
|
|
'/users/:userId',
|
|
validateParams(z.object({ userId: z.string().uuid() })),
|
|
adminController.deleteUser
|
|
);
|
|
|
|
export default router;
|