diff --git a/.DS_Store b/.DS_Store index 281e3db..404024a 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/build/libs/BE-ver_230303.jar b/build/libs/BE-ver_230303.jar new file mode 100644 index 0000000..de6a4eb Binary files /dev/null and b/build/libs/BE-ver_230303.jar differ diff --git a/build/libs/BE-ver_230304.jar b/build/libs/BE-ver_230304.jar new file mode 100644 index 0000000..51e28db Binary files /dev/null and b/build/libs/BE-ver_230304.jar differ diff --git a/src/main/java/Remoa/BE/Member/Controller/KakaoController.java b/src/main/java/Remoa/BE/Member/Controller/KakaoController.java index be74e54..bbe91ef 100644 --- a/src/main/java/Remoa/BE/Member/Controller/KakaoController.java +++ b/src/main/java/Remoa/BE/Member/Controller/KakaoController.java @@ -94,9 +94,16 @@ public ResponseEntity testLogin(@RequestBody Integer kakaoId, HttpServle public ResponseEntity signupKakaoMember(@RequestBody @Validated ReqSignupDto form, HttpServletRequest request) { Member member = new Member(); + + //닉네임 사용 가능하면 그대로 진행, 불가능하면 임의 닉네임 "유저-{kakaoId}로 지정. + Boolean nicknameDuplicate = memberService.isNicknameDuplicate(form.getNickname()); + if (nicknameDuplicate) { //특수문자는 닉네임에 사용할 수 없으나 임의로 지정하는 닉네임에는 사용 가능하게 해서 또 다른 중복 문제 없게끔. + member.setNickname("유저-" + form.getKakaoId()); + } else { + member.setNickname(form.getNickname()); + } member.setKakaoId(form.getKakaoId()); member.setEmail(form.getEmail()); - member.setNickname(form.getNickname()); member.setProfileImage(form.getProfileImage()); member.setTermConsent(form.getTermConsent()); diff --git a/src/main/java/Remoa/BE/Member/Controller/ProfileController.java b/src/main/java/Remoa/BE/Member/Controller/ProfileController.java index c8bebb4..2827234 100644 --- a/src/main/java/Remoa/BE/Member/Controller/ProfileController.java +++ b/src/main/java/Remoa/BE/Member/Controller/ProfileController.java @@ -46,7 +46,7 @@ public ResponseEntity userHome(HttpServletRequest request) { // RESTful API에서 PUT 매핑은 수정할 리소스를 명확하게 지정해야 하는데 이 경우에는 URL에 리소스 ID를 명시하는 것이 일반적이다. // 그런데 우리는 수정할 사용자의 정보를 모두 입력받아 수정하는 형태이기 때문에 // URL에 리소스 ID를 명시할 필요가 없어서 PUT대신 POST 매핑을 사용하였습니다. - @PostMapping("/user") + @PutMapping("/user") public ResponseEntity editProfile(@RequestBody EditProfileForm form, HttpServletRequest request) { HttpSession session = request.getSession(); Member loginMember = (Member) session.getAttribute("loginMember"); @@ -56,7 +56,8 @@ public ResponseEntity editProfile(@RequestBody EditProfileForm form, Htt return failResponse(CustomMessage.VALIDATED, "로그인하지 않은 회원입니다. 로 redirect"); } - if (memberService.isNicknameDuplicate(form.getNickname())) { + if (memberService.isNicknameDuplicate(form.getNickname()) && + isNicknameChanged(form, loginMember)) { return failResponse(CustomMessage.VALIDATED, "닉네임이 중복됩니다."); } @@ -69,6 +70,13 @@ public ResponseEntity editProfile(@RequestBody EditProfileForm form, Htt return successResponse(CustomMessage.OK, "redirect:/user"); } + /** + * 닉네임이 변경되지 않아 기존의 닉네임을 다시 사용했을 때 닉네임 중복 체크 로직이 동작하지 않게끔. + */ + private boolean isNicknameChanged(EditProfileForm form, Member loginMember) { + return !(form.getNickname().equals(loginMember.getNickname())); + } + /** * 프론트에서 닉네임 중복 검사를 할 때 사용할 메서드 * @param nickname diff --git a/src/main/java/Remoa/BE/Member/Service/KakaoService.java b/src/main/java/Remoa/BE/Member/Service/KakaoService.java index 79a2ed0..404adf8 100644 --- a/src/main/java/Remoa/BE/Member/Service/KakaoService.java +++ b/src/main/java/Remoa/BE/Member/Service/KakaoService.java @@ -14,6 +14,7 @@ import java.net.MalformedURLException; import java.net.ProtocolException; import java.net.URL; +import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; @@ -121,7 +122,8 @@ public Map getUserInfo(String access_token) throws IOException { int responseCode = urlConnection.getResponseCode(); log.debug("responseCode = {}", responseCode); - BufferedReader br = new BufferedReader(new InputStreamReader(urlConnection.getInputStream())); + BufferedReader br = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), + StandardCharsets.UTF_8)); //한글 깨짐 문제 해결하기 위한 인코딩 파라메터 추가 String line = ""; String res = ""; //다양한 형식(한 줄 이상의 JSON 데이터)를 받기 위한 작업 diff --git a/src/main/java/Remoa/BE/Post/Controller/MyPostController.java b/src/main/java/Remoa/BE/Post/Controller/MyPostController.java new file mode 100644 index 0000000..0b1ade3 --- /dev/null +++ b/src/main/java/Remoa/BE/Post/Controller/MyPostController.java @@ -0,0 +1,23 @@ +package Remoa.BE.Post.Controller; + +import Remoa.BE.Post.Service.PostService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +@Slf4j +@RestController +@RequiredArgsConstructor +@CrossOrigin(origins = "*") +public class MyPostController { + + private final PostService postService; + + /* @GetMapping("/user/reference") + public ResponseEntity viewMyReference() { + + }*/ +} diff --git a/src/test/java/Remoa/BE/withdrew/WithdrewTest.java b/src/test/java/Remoa/BE/withdrew/WithdrewTest.java index 3d76598..e628aca 100644 --- a/src/test/java/Remoa/BE/withdrew/WithdrewTest.java +++ b/src/test/java/Remoa/BE/withdrew/WithdrewTest.java @@ -3,7 +3,7 @@ import Remoa.BE.Member.Domain.Member; import Remoa.BE.Member.Repository.MemberRepository; -import Remoa.BE.Member.Service.SignupService; +import Remoa.BE.Member.Service.MemberService; import Remoa.BE.Member.Service.WithdrewService; import org.junit.Assert; import org.junit.Test; @@ -18,6 +18,7 @@ import javax.persistence.EntityManager; import java.util.List; +import java.util.Optional; import static org.junit.Assert.assertEquals; @@ -31,7 +32,7 @@ public class WithdrewTest { @Autowired - SignupService signupService; + MemberService memberService; @Autowired MemberRepository memberRepository; @@ -46,7 +47,7 @@ public class WithdrewTest { public void 회원을_탈퇴하면_멤버테이블의_deleted_컬럼이_true로_바뀐다() throws Exception { //given Member testMember = createMember(); - signupService.join(testMember); + memberService.join(testMember); em.flush(); @@ -72,7 +73,7 @@ public class WithdrewTest { public void 탈퇴한_멤버_엔티티의_deleted_필드는_true이다() throws Exception { //given Member testMember = createMember(); - signupService.join(testMember); + memberService.join(testMember); em.flush(); @@ -83,7 +84,9 @@ public class WithdrewTest { em.flush(); - Member findMember = memberRepository.findOne(testMemberId); + Optional member = memberRepository.findOne(testMemberId); + Member findMember = member.get(); + //then assertEquals("회원을 탈퇴하면 해당 멤버 엔티티의 deleted 필드는 true이다.", true, findMember.getDeleted());