41 lines
1.6 KiB
JavaScript
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;
|