From e9c80e8faf27c476e133f0473000f3e936dcfc12 Mon Sep 17 00:00:00 2001 From: fakerdeft Date: Wed, 17 Jan 2024 23:32:14 +0900 Subject: [PATCH 1/5] =?UTF-8?q?(#23)refactor:=20member=5Fid=20@Column=20?= =?UTF-8?q?=EC=96=B4=EB=85=B8=ED=85=8C=EC=9D=B4=EC=85=98=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=ED=96=88=EC=8A=B5=EB=8B=88=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/coverflow/member/domain/Member.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/coverflow/member/domain/Member.java b/src/main/java/com/coverflow/member/domain/Member.java index 24a4ed31..a4cd1118 100644 --- a/src/main/java/com/coverflow/member/domain/Member.java +++ b/src/main/java/com/coverflow/member/domain/Member.java @@ -17,7 +17,6 @@ public class Member extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.UUID) - @Column(name = "member_id") private UUID member_id; private String password; private String email; From 82a6a25bb39cdb900741e7ea40484f60d1b9b2eb Mon Sep 17 00:00:00 2001 From: fakerdeft Date: Wed, 17 Jan 2024 23:35:28 +0900 Subject: [PATCH 2/5] =?UTF-8?q?(#23)refactor:=20=EB=B6=88=ED=95=84?= =?UTF-8?q?=EC=9A=94=ED=95=9C=20try-catch=20=EC=82=AD=EC=A0=9C=ED=96=88?= =?UTF-8?q?=EC=8A=B5=EB=8B=88=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/OAuth2LoginSuccessHandler.java | 22 ++++++++----------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/coverflow/global/oauth2/handler/OAuth2LoginSuccessHandler.java b/src/main/java/com/coverflow/global/oauth2/handler/OAuth2LoginSuccessHandler.java index a2022125..d2aef563 100644 --- a/src/main/java/com/coverflow/global/oauth2/handler/OAuth2LoginSuccessHandler.java +++ b/src/main/java/com/coverflow/global/oauth2/handler/OAuth2LoginSuccessHandler.java @@ -22,24 +22,20 @@ public class OAuth2LoginSuccessHandler implements AuthenticationSuccessHandler { @Override public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException { log.info("OAuth2 Login 성공!"); - try { - CustomOAuth2User oAuth2User = (CustomOAuth2User) authentication.getPrincipal(); + CustomOAuth2User oAuth2User = (CustomOAuth2User) authentication.getPrincipal(); - // User의 Role이 GUEST일 경우 처음 요청한 회원이므로 회원가입 페이지로 리다이렉트 - if (oAuth2User.getRole() == Role.GUEST) { - String accessToken = jwtService.createAccessToken(oAuth2User.getEmail()); - response.addHeader(jwtService.getAccessHeader(), "Bearer " + accessToken); - response.sendRedirect("oauth2/sign-up"); // 프론트의 회원가입 추가 정보 입력 폼으로 리다이렉트 + // User의 Role이 GUEST일 경우 처음 요청한 회원이므로 회원가입 페이지로 리다이렉트 + if (oAuth2User.getRole() == Role.GUEST) { + String accessToken = jwtService.createAccessToken(oAuth2User.getEmail()); + response.addHeader(jwtService.getAccessHeader(), "Bearer " + accessToken); + response.sendRedirect("oauth2/sign-up"); // 프론트의 회원가입 추가 정보 입력 폼으로 리다이렉트 - jwtService.sendAccessAndRefreshToken(response, accessToken, null); + jwtService.sendAccessAndRefreshToken(response, accessToken, null); // User findUser = userRepository.findByEmail(oAuth2User.getEmail()) // .orElseThrow(() -> new IllegalArgumentException("이메일에 해당하는 유저가 없습니다.")); // findUser.authorizeUser(); - } else { - loginSuccess(response, oAuth2User); // 로그인에 성공한 경우 access, refresh 토큰 생성 - } - } catch (Exception e) { - throw e; + } else { + loginSuccess(response, oAuth2User); // 로그인에 성공한 경우 access, refresh 토큰 생성 } } From 04268fba76c4ef60a18d061e9eccdb137a62c16b Mon Sep 17 00:00:00 2001 From: fakerdeft Date: Thu, 18 Jan 2024 00:44:01 +0900 Subject: [PATCH 3/5] =?UTF-8?q?(#23)feat:=20=EB=8B=89=EB=84=A4=EC=9E=84=20?= =?UTF-8?q?=EC=A4=91=EB=B3=B5=20=EA=B2=80=EC=82=AC=20API=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=ED=96=88=EC=8A=B5=EB=8B=88=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../member/application/MemberService.java | 13 ++++++++++-- .../request/DuplicationNicknameRequest.java | 6 ++++++ .../coverflow/member/dto/request/Request.java | 4 ---- .../response/DuplicationNicknameResponse.java | 10 ++++++++++ .../member/dto/response/Response.java | 4 ---- .../member/presentation/MemberController.java | 20 +++++++++---------- 6 files changed, 36 insertions(+), 21 deletions(-) create mode 100644 src/main/java/com/coverflow/member/dto/request/DuplicationNicknameRequest.java delete mode 100644 src/main/java/com/coverflow/member/dto/request/Request.java create mode 100644 src/main/java/com/coverflow/member/dto/response/DuplicationNicknameResponse.java delete mode 100644 src/main/java/com/coverflow/member/dto/response/Response.java diff --git a/src/main/java/com/coverflow/member/application/MemberService.java b/src/main/java/com/coverflow/member/application/MemberService.java index d90fbf1a..0354ced2 100644 --- a/src/main/java/com/coverflow/member/application/MemberService.java +++ b/src/main/java/com/coverflow/member/application/MemberService.java @@ -4,8 +4,11 @@ import com.coverflow.member.domain.MemberRepository; import com.coverflow.member.domain.Role; import com.coverflow.member.dto.MemberSignUpDTO; +import com.coverflow.member.dto.request.DuplicationNicknameRequest; +import com.coverflow.member.dto.response.DuplicationNicknameResponse; import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; @@ -16,8 +19,7 @@ public class MemberService { private final MemberRepository memberRepository; private final PasswordEncoder passwordEncoder; - public void signUp(MemberSignUpDTO memberSignUpDTO) throws Exception { - + public void signUp(final MemberSignUpDTO memberSignUpDTO) throws Exception { if (memberRepository.findByEmail(memberSignUpDTO.getEmail()).isPresent()) { throw new Exception("이미 존재하는 이메일입니다."); } @@ -37,4 +39,11 @@ public void signUp(MemberSignUpDTO memberSignUpDTO) throws Exception { member.passwordEncode(passwordEncoder); memberRepository.save(member); } + + public DuplicationNicknameResponse verifyDuplicationNickname(final DuplicationNicknameRequest request) { + if (memberRepository.findByNickname(request.nickname()).isPresent()) { + return new DuplicationNicknameResponse(HttpStatus.OK, HttpStatus.OK.toString(), "이미 존재하는 닉네임입니다."); + } + return new DuplicationNicknameResponse(HttpStatus.OK, HttpStatus.OK.toString(), "사용 가능한 닉네임입니다."); + } } diff --git a/src/main/java/com/coverflow/member/dto/request/DuplicationNicknameRequest.java b/src/main/java/com/coverflow/member/dto/request/DuplicationNicknameRequest.java new file mode 100644 index 00000000..7bf3f621 --- /dev/null +++ b/src/main/java/com/coverflow/member/dto/request/DuplicationNicknameRequest.java @@ -0,0 +1,6 @@ +package com.coverflow.member.dto.request; + +public record DuplicationNicknameRequest( + String nickname +) { +} diff --git a/src/main/java/com/coverflow/member/dto/request/Request.java b/src/main/java/com/coverflow/member/dto/request/Request.java deleted file mode 100644 index 1a9a6a24..00000000 --- a/src/main/java/com/coverflow/member/dto/request/Request.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.coverflow.member.dto.request; - -public class Request { -} diff --git a/src/main/java/com/coverflow/member/dto/response/DuplicationNicknameResponse.java b/src/main/java/com/coverflow/member/dto/response/DuplicationNicknameResponse.java new file mode 100644 index 00000000..f3362c60 --- /dev/null +++ b/src/main/java/com/coverflow/member/dto/response/DuplicationNicknameResponse.java @@ -0,0 +1,10 @@ +package com.coverflow.member.dto.response; + +import org.springframework.http.HttpStatus; + +public record DuplicationNicknameResponse( + HttpStatus status, + String message, + String data +) { +} diff --git a/src/main/java/com/coverflow/member/dto/response/Response.java b/src/main/java/com/coverflow/member/dto/response/Response.java deleted file mode 100644 index ba8397dc..00000000 --- a/src/main/java/com/coverflow/member/dto/response/Response.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.coverflow.member.dto.response; - -public class Response { -} diff --git a/src/main/java/com/coverflow/member/presentation/MemberController.java b/src/main/java/com/coverflow/member/presentation/MemberController.java index 6dfceb79..573e6f81 100644 --- a/src/main/java/com/coverflow/member/presentation/MemberController.java +++ b/src/main/java/com/coverflow/member/presentation/MemberController.java @@ -1,26 +1,24 @@ package com.coverflow.member.presentation; import com.coverflow.member.application.MemberService; -import com.coverflow.member.dto.MemberSignUpDTO; +import com.coverflow.member.dto.request.DuplicationNicknameRequest; +import com.coverflow.member.dto.response.DuplicationNicknameResponse; import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RequiredArgsConstructor +@RequestMapping("/api/member") @RestController public class MemberController { private final MemberService memberService; - @PostMapping("/sign-up") - public String signUp(@RequestBody MemberSignUpDTO memberSignUpDto) throws Exception { - memberService.signUp(memberSignUpDto); - return "회원가입 성공"; - } - - @GetMapping("/jwt-test") - public String jwtTest() { - return "jwtTest 요청 성공"; + @GetMapping("/verify-duplication-nickname") + public ResponseEntity verifyDuplicationNickname(@RequestBody final DuplicationNicknameRequest request) { + final DuplicationNicknameResponse duplicationNicknameResponse = memberService.verifyDuplicationNickname(request); + return ResponseEntity.ok(duplicationNicknameResponse); } } From 48cf6afd29a883a7e2f1ba8d8660c8aed4e68c4f Mon Sep 17 00:00:00 2001 From: fakerdeft Date: Thu, 18 Jan 2024 00:59:27 +0900 Subject: [PATCH 4/5] =?UTF-8?q?(#23)refactor:=20=EB=8B=89=EB=84=A4?= =?UTF-8?q?=EC=9E=84=20=EC=A4=91=EB=B3=B5=20=EA=B2=80=EC=82=AC=20=EB=A9=94?= =?UTF-8?q?=EC=86=8C=EB=93=9C=20=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81?= =?UTF-8?q?=ED=96=88=EC=8A=B5=EB=8B=88=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/coverflow/member/application/MemberService.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/coverflow/member/application/MemberService.java b/src/main/java/com/coverflow/member/application/MemberService.java index 0354ced2..08037034 100644 --- a/src/main/java/com/coverflow/member/application/MemberService.java +++ b/src/main/java/com/coverflow/member/application/MemberService.java @@ -12,6 +12,8 @@ import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; +import java.util.Optional; + @RequiredArgsConstructor @Transactional @Service @@ -41,7 +43,9 @@ public void signUp(final MemberSignUpDTO memberSignUpDTO) throws Exception { } public DuplicationNicknameResponse verifyDuplicationNickname(final DuplicationNicknameRequest request) { - if (memberRepository.findByNickname(request.nickname()).isPresent()) { + final Optional nickname = memberRepository.findByNickname(request.nickname()); + + if (nickname.isPresent()) { return new DuplicationNicknameResponse(HttpStatus.OK, HttpStatus.OK.toString(), "이미 존재하는 닉네임입니다."); } return new DuplicationNicknameResponse(HttpStatus.OK, HttpStatus.OK.toString(), "사용 가능한 닉네임입니다."); From 0468cb9e51b59b005e763d6078ace16dfbbfb69b Mon Sep 17 00:00:00 2001 From: fakerdeft Date: Thu, 18 Jan 2024 01:09:31 +0900 Subject: [PATCH 5/5] =?UTF-8?q?(#23)refactor:=20=ED=97=88=EC=9A=A9=20URL?= =?UTF-8?q?=20=EC=88=98=EC=A0=95=ED=96=88=EC=8A=B5=EB=8B=88=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/coverflow/global/config/SecurityConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/coverflow/global/config/SecurityConfig.java b/src/main/java/com/coverflow/global/config/SecurityConfig.java index 4a12b7e9..aa0254c1 100644 --- a/src/main/java/com/coverflow/global/config/SecurityConfig.java +++ b/src/main/java/com/coverflow/global/config/SecurityConfig.java @@ -31,7 +31,7 @@ @Configuration @EnableWebSecurity public class SecurityConfig { - private final String[] ALLOWED_URIS = {"/", "/index.html", "/sign-up"}; + private final String[] ALLOWED_URIS = {"/", "/index.html"}; private final LoginService loginService; private final JwtService jwtService; private final MemberRepository memberRepository;