From 599b455baaefc007f756dc580810332a18db9056 Mon Sep 17 00:00:00 2001 From: rightpair Date: Thu, 4 Jan 2024 14:07:48 +0900 Subject: [PATCH 1/4] =?UTF-8?q?[feature]=20=EB=A9=A4=EB=B2=84=20=EC=97=94?= =?UTF-8?q?=ED=8B=B0=ED=8B=B0=EC=97=90=20=EC=9D=B4=EB=A6=84=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 설명: - #27 를 참고하세요. --- .../com/coolpeace/domain/member/entity/Member.java | 10 +++++++--- src/test/http/register.http | 8 -------- 2 files changed, 7 insertions(+), 11 deletions(-) delete mode 100644 src/test/http/register.http diff --git a/src/main/java/com/coolpeace/domain/member/entity/Member.java b/src/main/java/com/coolpeace/domain/member/entity/Member.java index fb2a08f2..cacc9c4d 100644 --- a/src/main/java/com/coolpeace/domain/member/entity/Member.java +++ b/src/main/java/com/coolpeace/domain/member/entity/Member.java @@ -26,6 +26,9 @@ public class Member extends BaseTimeEntity { @Column(nullable = false) private String password; + @Column(nullable = false) + private String name; + @OneToMany(mappedBy = "member", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true) private final List roles = new ArrayList<>(); @@ -41,13 +44,14 @@ public class Member extends BaseTimeEntity { @OneToMany(mappedBy = "member", cascade = CascadeType.ALL) private List serviceTerms; - private Member(String email, String password, Role role) { + private Member(String email, String password, String name, Role role) { this.email = email; this.password = password; + this.name =name; this.roles.add(MemberRole.from(this, role)); } - public static Member from(String email, String password, Role role) { - return new Member(email, password, role); + public static Member from(String email, String password, String name, Role role) { + return new Member(email, password, name, role); } } diff --git a/src/test/http/register.http b/src/test/http/register.http deleted file mode 100644 index 581d3446..00000000 --- a/src/test/http/register.http +++ /dev/null @@ -1,8 +0,0 @@ -### 회원가입 -POST http://localhost:8080/v1/member/register -Content-Type: application/json - -{ - "email": "test@test.com", - "password": "pass" -} \ No newline at end of file From c11d098fd21b3a9591e7dbb6cd7c12a3be9de1dc Mon Sep 17 00:00:00 2001 From: rightpair Date: Thu, 4 Jan 2024 14:08:52 +0900 Subject: [PATCH 2/4] =?UTF-8?q?[feature]=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=EC=8B=9C=20=EC=9D=B4=EB=A6=84=20=ED=95=84=EB=93=9C?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/member/dto/request/MemberRegisterRequest.java | 5 ++++- .../coolpeace/domain/member/service/MemberService.java | 6 +++++- src/test/http/register.http | 9 +++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 src/test/http/register.http diff --git a/src/main/java/com/coolpeace/domain/member/dto/request/MemberRegisterRequest.java b/src/main/java/com/coolpeace/domain/member/dto/request/MemberRegisterRequest.java index 13efcd63..f447b25b 100644 --- a/src/main/java/com/coolpeace/domain/member/dto/request/MemberRegisterRequest.java +++ b/src/main/java/com/coolpeace/domain/member/dto/request/MemberRegisterRequest.java @@ -8,6 +8,9 @@ public record MemberRegisterRequest( @Email(message = "이메일 형식에 맞지 않습니다.", regexp = "^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(?:\\.[a-z]{2})?)$") String email, @NotBlank(message = "비밀번호를 입력해주세요.") - String password + String password, + + @NotBlank(message = "이름을 입력해주세요.") + String name ) { } diff --git a/src/main/java/com/coolpeace/domain/member/service/MemberService.java b/src/main/java/com/coolpeace/domain/member/service/MemberService.java index 6c546666..b8c7ce19 100644 --- a/src/main/java/com/coolpeace/domain/member/service/MemberService.java +++ b/src/main/java/com/coolpeace/domain/member/service/MemberService.java @@ -51,7 +51,11 @@ public JwtPair registerAsOwner(MemberRegisterRequest registerRequest) { validateMemberEmail(registerRequest.email()); Role role = roleRepository.findByRoleType(RoleType.OWNER).orElseThrow(MemberRoleNotFoundException::new); Member newMember = memberRepository.save( - Member.from(registerRequest.email(), passwordEncoder.encode(registerRequest.password()), role) + Member.from( + registerRequest.email(), + passwordEncoder.encode(registerRequest.password()), + registerRequest.name(), + role) ); return jwtService.createTokenPair( diff --git a/src/test/http/register.http b/src/test/http/register.http new file mode 100644 index 00000000..e26def3e --- /dev/null +++ b/src/test/http/register.http @@ -0,0 +1,9 @@ +### 회원가입 +POST http://localhost:8080/v1/member/register +Content-Type: application/json + +{ + "email": "test@test.com", + "password": "pass", + "name": "testname" +} \ No newline at end of file From 04bfa3dbd2a1c4be30817623e8144948e9d83e4b Mon Sep 17 00:00:00 2001 From: rightpair Date: Thu, 4 Jan 2024 14:12:21 +0900 Subject: [PATCH 3/4] =?UTF-8?q?[feature]=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20?= =?UTF-8?q?=EC=9D=91=EB=8B=B5=EC=97=90=20=ED=9A=8C=EC=9B=90=20=EC=9D=B4?= =?UTF-8?q?=EB=A6=84=20=ED=95=84=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/member/controller/MemberController.java | 2 +- .../domain/member/dto/response/MemberLoginResponse.java | 5 +++-- .../com/coolpeace/domain/member/service/MemberService.java | 7 +++++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/coolpeace/domain/member/controller/MemberController.java b/src/main/java/com/coolpeace/domain/member/controller/MemberController.java index d5e50c69..7fd2183c 100644 --- a/src/main/java/com/coolpeace/domain/member/controller/MemberController.java +++ b/src/main/java/com/coolpeace/domain/member/controller/MemberController.java @@ -28,7 +28,7 @@ public class MemberController { public ResponseEntity login( @Valid @RequestBody MemberLoginRequest loginRequest ) { - return ResponseEntity.ok(MemberLoginResponse.from(memberService.login(loginRequest))); + return ResponseEntity.ok(memberService.login(loginRequest)); } @PostMapping("/register") diff --git a/src/main/java/com/coolpeace/domain/member/dto/response/MemberLoginResponse.java b/src/main/java/com/coolpeace/domain/member/dto/response/MemberLoginResponse.java index 1c4e68e8..eb9d5198 100644 --- a/src/main/java/com/coolpeace/domain/member/dto/response/MemberLoginResponse.java +++ b/src/main/java/com/coolpeace/domain/member/dto/response/MemberLoginResponse.java @@ -5,9 +5,10 @@ public record MemberLoginResponse ( String accessToken, String refreshToken, + String name, long expiresIn ) { - public static MemberLoginResponse from(JwtPair jwtPair) { - return new MemberLoginResponse(jwtPair.accessToken(), jwtPair.refreshToken(), jwtPair.expiresIn()); + public static MemberLoginResponse from(String name, JwtPair jwtPair) { + return new MemberLoginResponse(jwtPair.accessToken(), jwtPair.refreshToken(), name, jwtPair.expiresIn()); } } diff --git a/src/main/java/com/coolpeace/domain/member/service/MemberService.java b/src/main/java/com/coolpeace/domain/member/service/MemberService.java index b8c7ce19..1ebd1ed8 100644 --- a/src/main/java/com/coolpeace/domain/member/service/MemberService.java +++ b/src/main/java/com/coolpeace/domain/member/service/MemberService.java @@ -3,6 +3,7 @@ import com.coolpeace.domain.member.dto.request.MemberLoginRequest; import com.coolpeace.domain.member.dto.request.MemberRegisterEmailCheckRequest; import com.coolpeace.domain.member.dto.request.MemberRegisterRequest; +import com.coolpeace.domain.member.dto.response.MemberLoginResponse; import com.coolpeace.domain.member.entity.Member; import com.coolpeace.domain.member.entity.Role; import com.coolpeace.domain.member.entity.type.RoleType; @@ -34,7 +35,7 @@ public Member getMemberByEmail(String email) { } @Transactional - public JwtPair login(MemberLoginRequest loginRequest) { + public MemberLoginResponse login(MemberLoginRequest loginRequest) { Member storedMember = memberRepository.findByEmail(loginRequest.email()) .orElseThrow(MemberNotFoundException::new); @@ -42,8 +43,10 @@ public JwtPair login(MemberLoginRequest loginRequest) { throw new MemberWrongPasswordException(); } - return jwtService.createTokenPair( + JwtPair newTokenPair = jwtService.createTokenPair( JwtPayload.fromNow(String.valueOf(storedMember.getId()), storedMember.getEmail())); + + return MemberLoginResponse.from(storedMember.getName(), newTokenPair); } @Transactional From d15199a3529518343ab0e1937603e5851f043521 Mon Sep 17 00:00:00 2001 From: rightpair Date: Thu, 4 Jan 2024 14:19:25 +0900 Subject: [PATCH 4/4] =?UTF-8?q?[feature]=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=EC=8B=9C=20=EC=9D=91=EB=8B=B5=20=EB=B0=94=EB=94=94?= =?UTF-8?q?=EA=B0=80=20=EC=97=86=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 설명: - 회원가입 시 로그인과 동일한 응답을 처리하는 점을 보고 고민 끝에 회원가입 시 바디는 없게 하고 로그인 시에 JWT 토큰을 받도록 수정하려 합니다. --- .../domain/member/controller/MemberController.java | 7 +++---- .../member/dto/response/MemberRegisterResponse.java | 13 ------------- .../domain/member/service/MemberService.java | 7 ++----- 3 files changed, 5 insertions(+), 22 deletions(-) delete mode 100644 src/main/java/com/coolpeace/domain/member/dto/response/MemberRegisterResponse.java diff --git a/src/main/java/com/coolpeace/domain/member/controller/MemberController.java b/src/main/java/com/coolpeace/domain/member/controller/MemberController.java index 7fd2183c..d4ab0239 100644 --- a/src/main/java/com/coolpeace/domain/member/controller/MemberController.java +++ b/src/main/java/com/coolpeace/domain/member/controller/MemberController.java @@ -6,7 +6,6 @@ import com.coolpeace.domain.member.dto.request.RefreshAccessTokenRequest; import com.coolpeace.domain.member.dto.response.MemberLoginResponse; import com.coolpeace.domain.member.dto.response.MemberRefreshAccessTokenResponse; -import com.coolpeace.domain.member.dto.response.MemberRegisterResponse; import com.coolpeace.domain.member.service.MemberService; import com.coolpeace.global.jwt.security.JwtPrincipal; import com.coolpeace.global.resolver.AuthJwtCredential; @@ -32,11 +31,11 @@ public ResponseEntity login( } @PostMapping("/register") - public ResponseEntity register( + public ResponseEntity register( @Valid @RequestBody MemberRegisterRequest registerRequest ) { - return ResponseEntity.created(URI.create("/")) - .body(MemberRegisterResponse.from(memberService.registerAsOwner(registerRequest))); + memberService.registerAsOwner(registerRequest); + return ResponseEntity.created(URI.create("/")).build(); } @GetMapping("/register/check/email") diff --git a/src/main/java/com/coolpeace/domain/member/dto/response/MemberRegisterResponse.java b/src/main/java/com/coolpeace/domain/member/dto/response/MemberRegisterResponse.java deleted file mode 100644 index 6ea87ecc..00000000 --- a/src/main/java/com/coolpeace/domain/member/dto/response/MemberRegisterResponse.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.coolpeace.domain.member.dto.response; - -import com.coolpeace.global.jwt.dto.JwtPair; - -public record MemberRegisterResponse ( - String accessToken, - String refreshToken, - long expiresIn -) { - public static MemberRegisterResponse from(JwtPair jwtPair) { - return new MemberRegisterResponse(jwtPair.accessToken(), jwtPair.refreshToken(), jwtPair.expiresIn()); - } -} diff --git a/src/main/java/com/coolpeace/domain/member/service/MemberService.java b/src/main/java/com/coolpeace/domain/member/service/MemberService.java index 1ebd1ed8..51719466 100644 --- a/src/main/java/com/coolpeace/domain/member/service/MemberService.java +++ b/src/main/java/com/coolpeace/domain/member/service/MemberService.java @@ -50,19 +50,16 @@ public MemberLoginResponse login(MemberLoginRequest loginRequest) { } @Transactional - public JwtPair registerAsOwner(MemberRegisterRequest registerRequest) { + public void registerAsOwner(MemberRegisterRequest registerRequest) { validateMemberEmail(registerRequest.email()); Role role = roleRepository.findByRoleType(RoleType.OWNER).orElseThrow(MemberRoleNotFoundException::new); - Member newMember = memberRepository.save( + memberRepository.save( Member.from( registerRequest.email(), passwordEncoder.encode(registerRequest.password()), registerRequest.name(), role) ); - - return jwtService.createTokenPair( - JwtPayload.fromNow(String.valueOf(newMember.getId()), newMember.getEmail())); } @Transactional(readOnly = true)