diff --git a/src/main/java/com/umc/finly/domain/auth/converter/AuthConverter.java b/src/main/java/com/umc/finly/domain/auth/converter/AuthConverter.java index c0e60f7a..ae7d98c6 100644 --- a/src/main/java/com/umc/finly/domain/auth/converter/AuthConverter.java +++ b/src/main/java/com/umc/finly/domain/auth/converter/AuthConverter.java @@ -8,11 +8,6 @@ @NoArgsConstructor(access = AccessLevel.PRIVATE) public class AuthConverter { - /** 이메일 중복 확인 응답 */ - public static CheckEmailResDTO toCheckEmailResDTO(boolean available) { - return new CheckEmailResDTO(available); - } - /** 회원가입 응답 */ public static AuthSignUpResDTO toSignUpResDTO(Member member, Long personaId) { return new AuthSignUpResDTO( @@ -34,9 +29,4 @@ public static AuthLoginResDTO toLoginResDTO(String accessToken, Member member) { ) ); } - - /** 토큰 재발급 응답 */ - public static AuthReissueResDTO toReissueResDTO(String accessToken) { - return new AuthReissueResDTO(accessToken); - } } \ No newline at end of file diff --git a/src/main/java/com/umc/finly/domain/auth/dto/request/AuthLoginReqDTO.java b/src/main/java/com/umc/finly/domain/auth/dto/request/AuthLoginReqDTO.java index 512ebae4..6dbfd4f7 100644 --- a/src/main/java/com/umc/finly/domain/auth/dto/request/AuthLoginReqDTO.java +++ b/src/main/java/com/umc/finly/domain/auth/dto/request/AuthLoginReqDTO.java @@ -6,7 +6,7 @@ @Getter public class AuthLoginReqDTO { - // 로그인 DTO + // 로그인 요청 DTO @Email(message = "유효한 이메일이어야 합니다.") @NotBlank(message = "이메일을 입력하세요.") diff --git a/src/main/java/com/umc/finly/domain/auth/dto/request/AuthSignUpReqDTO.java b/src/main/java/com/umc/finly/domain/auth/dto/request/AuthSignUpReqDTO.java index 5c5ed22c..851dba3f 100644 --- a/src/main/java/com/umc/finly/domain/auth/dto/request/AuthSignUpReqDTO.java +++ b/src/main/java/com/umc/finly/domain/auth/dto/request/AuthSignUpReqDTO.java @@ -17,6 +17,7 @@ @AllArgsConstructor @Builder public class AuthSignUpReqDTO { + // 회원가입 요청 DTO @NotBlank(message = "email은 필수입니다.") @Email(message = "email 형식이 올바르지 않습니다.") diff --git a/src/main/java/com/umc/finly/domain/auth/dto/response/AuthReissueResDTO.java b/src/main/java/com/umc/finly/domain/auth/dto/response/AuthReissueResDTO.java index cb54f464..1a62b529 100644 --- a/src/main/java/com/umc/finly/domain/auth/dto/response/AuthReissueResDTO.java +++ b/src/main/java/com/umc/finly/domain/auth/dto/response/AuthReissueResDTO.java @@ -6,6 +6,7 @@ @Getter @AllArgsConstructor public class AuthReissueResDTO { + // 토큰 재발급 응답 DTO private String accessToken; } diff --git a/src/main/java/com/umc/finly/domain/auth/dto/response/AuthSignUpResDTO.java b/src/main/java/com/umc/finly/domain/auth/dto/response/AuthSignUpResDTO.java index 90cfcecf..eed447f2 100644 --- a/src/main/java/com/umc/finly/domain/auth/dto/response/AuthSignUpResDTO.java +++ b/src/main/java/com/umc/finly/domain/auth/dto/response/AuthSignUpResDTO.java @@ -6,6 +6,8 @@ @Getter @AllArgsConstructor public class AuthSignUpResDTO { + // 회원가입 응답 DTO + private Long memberId; private String email; private String nickname; diff --git a/src/main/java/com/umc/finly/domain/auth/dto/response/CheckEmailResDTO.java b/src/main/java/com/umc/finly/domain/auth/dto/response/CheckEmailResDTO.java index bff2e855..f7407e79 100644 --- a/src/main/java/com/umc/finly/domain/auth/dto/response/CheckEmailResDTO.java +++ b/src/main/java/com/umc/finly/domain/auth/dto/response/CheckEmailResDTO.java @@ -6,6 +6,7 @@ @Getter @AllArgsConstructor public class CheckEmailResDTO { + // 이메일 중복 확인 응답 DTO private final boolean available; } \ No newline at end of file diff --git a/src/main/java/com/umc/finly/domain/auth/dto/response/TermDetailResDTO.java b/src/main/java/com/umc/finly/domain/auth/dto/response/TermDetailResDTO.java index 43afb224..2218f8f1 100644 --- a/src/main/java/com/umc/finly/domain/auth/dto/response/TermDetailResDTO.java +++ b/src/main/java/com/umc/finly/domain/auth/dto/response/TermDetailResDTO.java @@ -6,6 +6,7 @@ @Getter @AllArgsConstructor public class TermDetailResDTO { + // 약관 상세 조회 응답 DTO private Long termId; private String termType; diff --git a/src/main/java/com/umc/finly/domain/auth/dto/response/TermResDTO.java b/src/main/java/com/umc/finly/domain/auth/dto/response/TermResDTO.java index 3854d70b..c20bf17d 100644 --- a/src/main/java/com/umc/finly/domain/auth/dto/response/TermResDTO.java +++ b/src/main/java/com/umc/finly/domain/auth/dto/response/TermResDTO.java @@ -5,8 +5,8 @@ import java.util.List; -// 약관 관련 API 응답 DTO public class TermResDTO { + // 약관 조회 응답 DTO // 약관 목록 응답 Wrapper @Getter diff --git a/src/main/java/com/umc/finly/domain/auth/exception/code/AuthErrorCode.java b/src/main/java/com/umc/finly/domain/auth/exception/code/AuthErrorCode.java index 5478350b..b3ad4d29 100644 --- a/src/main/java/com/umc/finly/domain/auth/exception/code/AuthErrorCode.java +++ b/src/main/java/com/umc/finly/domain/auth/exception/code/AuthErrorCode.java @@ -8,8 +8,6 @@ @AllArgsConstructor public enum AuthErrorCode implements BaseCode { - EMAIL_ALREADY_EXISTS(HttpStatus.CONFLICT, "AUTH409", "이미 가입된 이메일입니다."), - // 400 INVALID_PASSWORD(HttpStatus.BAD_REQUEST, "AUTH400_1", "비밀번호 형식이 올바르지 않습니다."), INVALID_NICKNAME(HttpStatus.BAD_REQUEST, "AUTH400_2", "닉네임 형식이 올바르지 않습니다."), @@ -28,13 +26,16 @@ public enum AuthErrorCode implements BaseCode { REFRESH_TOKEN_MISMATCH(HttpStatus.UNAUTHORIZED, "AUTH401_8", "서버에 저장된 refreshToken과 일치하지 않습니다."), //403 - FORBIDDEN(HttpStatus.FORBIDDEN, "AUTH403", "접근 권한이 없습니다."), + FORBIDDEN(HttpStatus.FORBIDDEN, "AUTH403_1", "접근 권한이 없습니다."), // 404 - TERM_NOT_FOUND(HttpStatus.NOT_FOUND, "AUTH404", "해당 약관이 없습니다."), + TERM_NOT_FOUND(HttpStatus.NOT_FOUND, "AUTH404_1", "해당 약관이 없습니다."), + + //409 + EMAIL_ALREADY_EXISTS(HttpStatus.CONFLICT, "AUTH409_1", "이미 가입된 이메일입니다."), // 422 - REQUIRED_TERM_NOT_AGREED(HttpStatus.UNPROCESSABLE_ENTITY, "AUTH422", "필수 약관에 동의해야 합니다."); + REQUIRED_TERM_NOT_AGREED(HttpStatus.UNPROCESSABLE_ENTITY, "AUTH422_1", "필수 약관에 동의해야 합니다."); private final HttpStatus httpStatus; private final String code; diff --git a/src/main/java/com/umc/finly/domain/auth/service/AuthServiceImpl.java b/src/main/java/com/umc/finly/domain/auth/service/AuthServiceImpl.java index 6b5a7c50..faa98882 100644 --- a/src/main/java/com/umc/finly/domain/auth/service/AuthServiceImpl.java +++ b/src/main/java/com/umc/finly/domain/auth/service/AuthServiceImpl.java @@ -113,7 +113,6 @@ public AuthSignUpResDTO signup(AuthSignUpReqDTO request) { // 8. 약관 동의 저장 saveTermAgreements(savedMember, agreedMap); - // Converter로 이동 return AuthConverter.toSignUpResDTO(savedMember, persona.getId()); } @@ -147,7 +146,6 @@ public LoginTokens login(AuthLoginReqDTO request) { (jwtProvider.getExpiration(refreshToken).getTime() - System.currentTimeMillis()) / 1000 ); - // Converter로 이동 AuthLoginResDTO body = AuthConverter.toLoginResDTO(accessToken, member); return new LoginTokens(body, refreshToken, refreshMaxAgeSeconds); @@ -244,6 +242,7 @@ public void logout(HttpServletResponse response) { } // ----------------------------------------------------------- + /** 유효성 검사 **/ private boolean isValidPassword(String raw) { return PasswordPolicy.isValid(raw); } @@ -252,6 +251,7 @@ private boolean isValidNickname(String nickname) { return nickname != null && nickname.matches(NICKNAME_REGEX); } + // 약관 동의 요청 리스트 맵으로 변환 private Map toAgreedMap(List agreements) { if (agreements == null || agreements.isEmpty()) { throw new CustomException(AuthErrorCode.INVALID_TERM_REQUEST); @@ -264,6 +264,7 @@ private Map toAgreedMap(List a )); } + // 필수 약관이 모두 True로 처리됐는지 검증 private void validateRequiredTermsAgreed(Map agreedMap) { List requiredTerms = REQUIRED_TERMS.stream() .map(tt -> termRepository.findByTermType(tt) @@ -279,6 +280,7 @@ private void validateRequiredTermsAgreed(Map agreedMap) { } } + // 회원가입 시 제출된 페르소나 답변 리스트로부터 최종 페르소나 계산 private Persona resolvePersonaFromSignup(List answers) { if (answers == null || answers.isEmpty()) { throw new CustomException(AuthErrorCode.INVALID_PERSONA_ANSWERS); @@ -291,6 +293,7 @@ private Persona resolvePersonaFromSignup(List answers) { return personaScoringService.resolvePersona(convertedAnswers); } + // agreedMap 기반으로 members-terms 매핑 테이블에 저장 private void saveTermAgreements(Member member, Map agreedMap) { List termIds = new ArrayList<>(agreedMap.keySet());