/** * 사용자 관리 라우터 * * 사용자 CRUD 및 상태 관리를 위한 API 라우트 정의 * * @author TK-FB-Project * @since 2025-12-11 */ const express = require('express'); const router = express.Router(); const userController = require('../controllers/userController'); const { verifyToken } = require('../middlewares/authMiddleware'); const logger = require('../utils/logger'); /** * 모든 라우트에 인증 미들웨어 적용 */ router.use(verifyToken); /** * 관리자 권한 확인 미들웨어 */ const adminOnly = (req, res, next) => { if (req.user && (req.user.role === 'admin' || req.user.role === 'system')) { next(); } else { logger.warn('관리자 권한 없는 접근 시도', { userId: req.user?.user_id, username: req.user?.username, role: req.user?.role, url: req.originalUrl }); return res.status(403).json({ success: false, message: '관리자 권한이 필요합니다' }); } }; /** * 모든 라우트에 관리자 권한 적용 */ router.use(adminOnly); // 📋 사용자 목록 조회 router.get('/', userController.getAllUsers); // 👤 특정 사용자 조회 router.get('/:id', userController.getUserById); // ➕ 새 사용자 생성 router.post('/', userController.createUser); // ✏️ 사용자 정보 수정 router.put('/:id', userController.updateUser); // 🔄 사용자 상태 변경 router.put('/:id/status', userController.updateUserStatus); // 🗑️ 사용자 삭제 router.delete('/:id', userController.deleteUser); module.exports = router;