// src/routes/auth.routes.js
// 인증 라우트

const express = require('express');
const { body } = require('express-validator');
const authController = require('../controllers/auth.controller');
const { validateRequest } = require('../middlewares/validation.middleware');

const router = express.Router();

/**
 * POST /api/v1/auth/register
 * 회원가입
 */
router.post(
  '/register',
  [
    body('email')
      .isEmail()
      .normalizeEmail()
      .withMessage('유효한 이메일 주소를 입력해주세요'),
    body('password')
      .isLength({ min: 8 })
      .withMessage('비밀번호는 최소 8자 이상이어야 합니다')
      .matches(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)/)
      .withMessage('비밀번호는 대문자, 소문자, 숫자를 포함해야 합니다'),
    body('name')
      .trim()
      .isLength({ min: 2, max: 100 })
      .withMessage('이름은 2-100자 사이여야 합니다'),
    validateRequest,
  ],
  authController.register
);

/**
 * POST /api/v1/auth/login
 * 로그인
 */
router.post(
  '/login',
  [
    body('email')
      .isEmail()
      .normalizeEmail()
      .withMessage('유효한 이메일 주소를 입력해주세요'),
    body('password')
      .notEmpty()
      .withMessage('비밀번호를 입력해주세요'),
    validateRequest,
  ],
  authController.login
);

/**
 * POST /api/v1/auth/refresh
 * 토큰 갱신
 */
router.post(
  '/refresh',
  [
    body('refreshToken')
      .notEmpty()
      .withMessage('리프레시 토큰을 입력해주세요'),
    validateRequest,
  ],
  authController.refresh
);

/**
 * POST /api/v1/auth/logout
 * 로그아웃
 */
router.post('/logout', authController.logout);

module.exports = router;
