From c0fa38ccabbdd113ba23bb855fc2900830477e3a Mon Sep 17 00:00:00 2001 From: yunhacandy Date: Mon, 2 Sep 2024 18:01:49 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=EA=B3=BC=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=EB=A9=94?= =?UTF-8?q?=EC=86=8C=EB=93=9C=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/controller/AuthController.java | 15 ++++-- .../growingpain/auth/service/AuthService.java | 53 +++++++++---------- 2 files changed, 37 insertions(+), 31 deletions(-) diff --git a/src/main/java/cotato/growingpain/auth/controller/AuthController.java b/src/main/java/cotato/growingpain/auth/controller/AuthController.java index 8cc82a0..49d7b82 100644 --- a/src/main/java/cotato/growingpain/auth/controller/AuthController.java +++ b/src/main/java/cotato/growingpain/auth/controller/AuthController.java @@ -44,13 +44,22 @@ public class AuthController { private final AuthService authService; private final ValidateService validateService; - @Operation(summary = "일반 로그인", description = "회원가입 및 로그인을 위한 메소드") + @Operation(summary = "회원가입", description = "회원가입을 위한 메소드") @ApiResponse(content = @Content(schema = @Schema(implementation = LoginResponse.class))) - @PostMapping("/login/general") + @PostMapping("/join") @ResponseStatus(HttpStatus.OK ) public Response joinAuth(@RequestBody @Valid LoginRequest request) { + log.info("[회원가입 컨트롤러]: {}", request.email()); + return Response.createSuccess("회원가입 완료", authService.joinAuth(AuthProvider.GENERAL, request)); + } + + @Operation(summary = "일반 로그인", description = "일반 로그인을 위한 메소드") + @ApiResponse(content = @Content(schema = @Schema(implementation = LoginResponse.class))) + @PostMapping("/login/general") + @ResponseStatus(HttpStatus.OK ) + public Response createLoginInfo(@RequestBody @Valid LoginRequest request) { log.info("[일반 로그인 컨트롤러]: {}", request.email()); - return Response.createSuccess("회원가입 및 로그인 완료", authService.createLoginInfo(AuthProvider.GENERAL, request)); + return Response.createSuccess("일반 로그인 완료", authService.createLoginInfo(request)); } @Operation(summary = "추가 정보 입력", description = "최초 로그인 (회원가입) 시 추가 정보를 입력하는 메소드") diff --git a/src/main/java/cotato/growingpain/auth/service/AuthService.java b/src/main/java/cotato/growingpain/auth/service/AuthService.java index 6c9b9c6..a259e5c 100644 --- a/src/main/java/cotato/growingpain/auth/service/AuthService.java +++ b/src/main/java/cotato/growingpain/auth/service/AuthService.java @@ -21,7 +21,6 @@ import cotato.growingpain.security.jwt.dto.request.ReissueRequest; import cotato.growingpain.security.jwt.dto.response.ReissueResponse; import cotato.growingpain.security.oauth.AuthProvider; -import java.util.Optional; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.RandomStringUtils; @@ -43,47 +42,45 @@ public class AuthService { private final BlackListRepository blackListRepository; @Transactional - public LoginResponse createLoginInfo(AuthProvider authProvider, LoginRequest request) { + public LoginResponse joinAuth(AuthProvider authProvider, LoginRequest request){ + // 신규 회원일 경우 회원가입 처리 + validateService.checkPasswordPattern(request.password()); + validateService.checkDuplicateEmail(request.email()); - Optional existingMember = memberRepository.findByEmail(request.email()); + log.info("[회원가입 서비스] 회원가입: {}", request.email()); - if (existingMember.isPresent()) { + Member member = registerMember(authProvider, request.email(), request.password()); - // 기존 회원이 존재하면 로그인 처리 - Member member = existingMember.get(); - if (!bCryptPasswordEncoder.matches(request.password(), member.getPassword())) { - throw new AppException(ErrorCode.WRONG_PASSWORD); - } + // 회원가입 성공 후 토큰 생성 및 반환 + Token token = jwtTokenProvider.createToken(member.getId(), member.getEmail(), MemberRole.PENDING.getDescription()); - log.info("[회원가입 서비스] 로그인: {}", request.email()); + saveOrUpdateRefreshToken(member.getEmail(), token.getRefreshToken()); - String role = (member.getMemberRole() == MemberRole.PENDING) - ? MemberRole.PENDING.getDescription() - : MemberRole.MEMBER.getDescription(); + return new LoginResponse(token, member.getId(), null, null, null); + } - Token token = jwtTokenProvider.createToken(member.getId(), member.getEmail(), role); + @Transactional + public LoginResponse createLoginInfo(LoginRequest request) { - // RefreshTokenEntity 저장 또는 업데이트 - saveOrUpdateRefreshToken(member.getEmail(), token.getRefreshToken()); + Member member = memberRepository.findByEmail(request.email()) + .orElseThrow(() -> new AppException(ErrorCode.MEMBER_NOT_FOUND)); - return new LoginResponse(token, member.getId(), member.getName(), member.getField(), member.getProfileImageUrl()); + if (!bCryptPasswordEncoder.matches(request.password(), member.getPassword())) { + throw new AppException(ErrorCode.WRONG_PASSWORD); } - else { - // 신규 회원일 경우 회원가입 처리 - validateService.checkPasswordPattern(request.password()); - validateService.checkDuplicateEmail(request.email()); - log.info("[회원가입 서비스] 회원가입: {}", request.email()); + log.info("[로그인 서비스] 로그인: {}", request.email()); - Member member = registerMember(authProvider, request.email(), request.password()); + String role = (member.getMemberRole() == MemberRole.PENDING) + ? MemberRole.PENDING.getDescription() + : MemberRole.MEMBER.getDescription(); - // 회원가입 성공 후 토큰 생성 및 반환 - Token token = jwtTokenProvider.createToken(member.getId(), member.getEmail(), MemberRole.PENDING.getDescription()); + Token token = jwtTokenProvider.createToken(member.getId(), member.getEmail(), role); - saveOrUpdateRefreshToken(member.getEmail(), token.getRefreshToken()); + // RefreshTokenEntity 저장 또는 업데이트 + saveOrUpdateRefreshToken(member.getEmail(), token.getRefreshToken()); - return new LoginResponse(token, null, null, null, null); - } + return new LoginResponse(token, member.getId(), member.getName(), member.getField(), member.getProfileImageUrl()); } private Member registerMember(AuthProvider authProvider, String email, String password) {