41 lines
1.1 KiB
TypeScript
41 lines
1.1 KiB
TypeScript
import { Router, Request, Response, NextFunction } from 'express';
|
|
import { mapSettingsService } from './settings.service';
|
|
import { updateMapSettingsSchema } from './settings.schemas';
|
|
import { validate } from '../../../middleware/validate';
|
|
import { authenticate } from '../../../middleware/auth.middleware';
|
|
import { requireRole } from '../../../middleware/rbac.middleware';
|
|
import { MAP_ROLES } from '../../../utils/roles';
|
|
|
|
const router = Router();
|
|
|
|
// GET /api/map/settings — public (needed for map center/zoom)
|
|
router.get(
|
|
'/',
|
|
async (_req: Request, res: Response, next: NextFunction) => {
|
|
try {
|
|
const settings = await mapSettingsService.get();
|
|
res.json(settings);
|
|
} catch (err) {
|
|
next(err);
|
|
}
|
|
}
|
|
);
|
|
|
|
// PUT /api/map/settings — admin only
|
|
router.put(
|
|
'/',
|
|
authenticate,
|
|
requireRole(...MAP_ROLES),
|
|
validate(updateMapSettingsSchema),
|
|
async (req: Request, res: Response, next: NextFunction) => {
|
|
try {
|
|
const settings = await mapSettingsService.update(req.body);
|
|
res.json(settings);
|
|
} catch (err) {
|
|
next(err);
|
|
}
|
|
}
|
|
);
|
|
|
|
export { router as mapSettingsRouter };
|