diff --git a/backend/src/routes/layers.ts b/backend/src/routes/layers.ts index b4c0fcb..cb38190 100644 --- a/backend/src/routes/layers.ts +++ b/backend/src/routes/layers.ts @@ -1,5 +1,31 @@ import { FastifyInstance } from 'fastify'; +import { authenticate, authorizeProjectMember, authorizePlannerPlus } from '../middleware/auth'; +import { getLayers, createLayer, updateLayer, deleteLayer, reorderLayers } from '../controllers/layerController'; +import { validateLayerCreation, validateLayerUpdate, validateLayerReorder } from '../validators/layerValidator'; export default async function layersRoutes(fastify: FastifyInstance) { - // Placeholder for layers routes + // GET /projects/:projectId/layers - List layers for project + fastify.get('/', { + preHandler: [authenticate, authorizeProjectMember] + }, getLayers); + + // POST /projects/:projectId/layers/ - Create layer (Planner+) + fastify.post('/', { + preHandler: [authenticate, authorizeProjectMember, authorizePlannerPlus] + }, createLayer); + + // PUT /projects/:projectId/layers/:layerId - Update layer (Planner+) + fastify.put('/:layerId', { + preHandler: [authenticate, authorizeProjectMember, authorizePlannerPlus] + }, updateLayer); + + // DELETE /projects/:projectId/layers/:layerId - Delete layer (Planner+) + fastify.delete('/:layerId', { + preHandler: [authenticate, authorizeProjectMember, authorizePlannerPlus] + }, deleteLayer); + + // PUT /projects/:projectId/layers/reorder - Reorder layers (Planner+) + fastify.put('/reorder', { + preHandler: [authenticate, authorizeProjectMember, authorizePlannerPlus] + }, reorderLayers); }