카테고리 없음

11주차 (4)

jaeoun0238 2025. 1. 9. 21:10

아무리해도 Layered Architecture Pattern을 못하겠어서 복습하고있습니다...

 

파일 초기 설정 방법

 

회원가입 부분 원래 코드

// 회원가입 엔드포인트
authRouter.post('/sign-up', signUpValidator, async (req, res, next) => {
  try {
    const { email, password, name } = req.body; // 요청 바디에서 이메일, 비밀번호, 이름 추출

    // 이메일 중복 확인
    const existedUser = await prisma.user.findUnique({ where: { email } });

    // 이메일이 중복된 경우
    if (existedUser) {
      return res.status(HTTP_STATUS.CONFLICT).json({
        status: HTTP_STATUS.CONFLICT,
        message: MESSAGES.AUTH.COMMON.EMAIL.DUPLICATED, // 중복 이메일 메시지
      });
    }

    // 비밀번호 해시화
    const hashedPassword = bcrypt.hashSync(password, HASH_SALT_ROUNDS);

    // 사용자 생성
    const data = await prisma.user.create({
      data: {
        email,
        password: hashedPassword,
        name,
      },
    });

    data.password = undefined; // 응답에서 비밀번호 제거

    return res.status(HTTP_STATUS.CREATED).json({
      status: HTTP_STATUS.CREATED,
      message: MESSAGES.AUTH.SIGN_UP.SUCCEED, // 회원가입 성공 메시지
      data,
    });
  } catch (error) {
    next(error); // 오류 발생 시 다음 미들웨어로 전달
  }
});

 

 

repositories 폴더 만들고 user.repository.js파일을 추가합니다

레포지토리부터 만들어서 유저의 정보를 정의해주는 파일을 만듭니다.

 

service폴더를 추가하고 auth.service.js파일을 추가합니다.

회원가입을 하는 함수를 생성하는 파일이기 때문에  만들었던 userRepository를 불러와서 회원가입을 하는 함수를 생성합니다.

 

controllers폴더를 생성하고 auth.controller.js 파일을 생성합니다.

여기서는 사용자 인증 관련 비즈니스 로직을 처리하는 역할을 합니다.

req와 res를 인자로 받아서 클라이언트의 요청과 응답을 처리합니다.
req.body에서 email, password, name을 추출합니다.
그 후, 서비스의 signUp 메서드를 호출하여 사용자 정보를 처리하고, 결과를 user 변수에 저장합니다.

 

 auth router의 회원가입 코드부분을 수정