Files
crm-server/src/routes/note.routes.js
richardtekula 2d6198b5f8 fix: Add admin-only protection to sensitive routes
- GET /admin/users now requires admin role
- GET /time-tracking/running-all now requires admin role
- GET /notes now requires admin role
- GET /audit-logs now requires admin role

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 08:39:21 +01:00

61 lines
1.5 KiB
JavaScript

import express from 'express';
import * as noteController from '../controllers/note.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 { createNoteSchema, updateNoteSchema } from '../validators/crm.validators.js';
import { z } from 'zod';
const router = express.Router();
// All note routes require authentication
router.use(authenticate);
/**
* Note management
*/
// Get all notes (admin only - returns all notes system-wide)
router.get('/', requireAdmin, noteController.getAllNotes);
// Get my reminders (must be before /:noteId to avoid route conflict)
router.get('/my-reminders', noteController.getMyReminders);
// Get note by ID
router.get(
'/:noteId',
validateParams(z.object({ noteId: z.string().uuid() })),
noteController.getNoteById
);
// Create new note
router.post(
'/',
validateBody(createNoteSchema),
noteController.createNote
);
// Update note
router.patch(
'/:noteId',
validateParams(z.object({ noteId: z.string().uuid() })),
validateBody(updateNoteSchema),
noteController.updateNote
);
// Delete note
router.delete(
'/:noteId',
validateParams(z.object({ noteId: z.string().uuid() })),
noteController.deleteNote
);
// Mark reminder as sent
router.post(
'/:noteId/mark-reminder-sent',
validateParams(z.object({ noteId: z.string().uuid() })),
noteController.markReminderSent
);
export default router;