Files
Tasks/backend/routes/user.routes.js
2025-11-12 00:49:22 +02:00

41 lines
1.6 KiB
JavaScript

const express = require('express');
const router = express.Router();
const userController = require('../controllers/user.controller');
const { verifyToken } = require('../middleware/auth.middleware');
/**
* @route GET /api/users/:userId/dashboard
* @desc Get user dashboard with stats, recent sessions, and category performance
* @access Private (User - own dashboard only)
*/
router.get('/:userId/dashboard', verifyToken, userController.getUserDashboard);
/**
* @route GET /api/users/:userId/history
* @desc Get user quiz history with pagination, filtering, and sorting
* @query page - Page number (default: 1)
* @query limit - Items per page (default: 10, max: 50)
* @query category - Filter by category ID
* @query status - Filter by status (completed, timeout, abandoned)
* @query startDate - Filter by start date (ISO 8601)
* @query endDate - Filter by end date (ISO 8601)
* @query sortBy - Sort by field (date, score) (default: date)
* @query sortOrder - Sort order (asc, desc) (default: desc)
* @access Private (User - own history only)
*/
router.get('/:userId/history', verifyToken, userController.getQuizHistory);
/**
* @route PUT /api/users/:userId
* @desc Update user profile
* @body username - New username (optional)
* @body email - New email (optional)
* @body currentPassword - Current password (required if changing password)
* @body newPassword - New password (optional)
* @body profileImage - Profile image URL (optional)
* @access Private (User - own profile only)
*/
router.put('/:userId', verifyToken, userController.updateUserProfile);
module.exports = router;