51 lines
1.2 KiB
JavaScript
51 lines
1.2 KiB
JavaScript
// src/routes/user.routes.js
|
|
// 사용자 라우트
|
|
|
|
const express = require('express');
|
|
const { body } = require('express-validator');
|
|
const userController = require('../controllers/user.controller');
|
|
const { authenticateJWT } = require('../middlewares/auth.middleware');
|
|
const { validateRequest } = require('../middlewares/validation.middleware');
|
|
|
|
const router = express.Router();
|
|
|
|
// 모든 라우트에 JWT 인증 적용
|
|
router.use(authenticateJWT);
|
|
|
|
/**
|
|
* GET /api/v1/users/me
|
|
* 내 정보 조회
|
|
*/
|
|
router.get('/me', userController.getMe);
|
|
|
|
/**
|
|
* PATCH /api/v1/users/me
|
|
* 내 정보 수정
|
|
*/
|
|
router.patch(
|
|
'/me',
|
|
[
|
|
body('name')
|
|
.optional()
|
|
.trim()
|
|
.isLength({ min: 2, max: 100 })
|
|
.withMessage('이름은 2-100자 사이여야 합니다'),
|
|
body('password')
|
|
.optional()
|
|
.isLength({ min: 8 })
|
|
.withMessage('비밀번호는 최소 8자 이상이어야 합니다')
|
|
.matches(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)/)
|
|
.withMessage('비밀번호는 대문자, 소문자, 숫자를 포함해야 합니다'),
|
|
validateRequest,
|
|
],
|
|
userController.updateMe
|
|
);
|
|
|
|
/**
|
|
* DELETE /api/v1/users/me
|
|
* 계정 삭제
|
|
*/
|
|
router.delete('/me', userController.deleteMe);
|
|
|
|
module.exports = router;
|