From 085252f2435c118327a67b29e34c96816f355562 Mon Sep 17 00:00:00 2001 From: minsu121x Date: Tue, 31 Jan 2023 00:16:20 +0900 Subject: [PATCH 1/5] =?UTF-8?q?[2023-01-31-00:15=20=EC=A1=B0=EB=AF=BC?= =?UTF-8?q?=EC=88=98]=20SNS=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=EB=82=A0?= =?UTF-8?q?=EB=A0=A4=EB=A8=B9=EC=9D=80=EA=B1=B0=20=EB=B3=B5=EA=B5=AC...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/wepat/config/WebConfig.java | 3 +- .../member/controller/MemberController.java | 29 +++++++++++++++ .../member/repository/MemberRepository.java | 4 ++ .../repository/MemberRepositoryImpl.java | 37 +++++++++++++++++++ .../wepat/member/service/MemberService.java | 2 + .../member/service/MemberServiceImpl.java | 5 +++ BE/src/main/resources/application.properties | 2 +- 7 files changed, 80 insertions(+), 2 deletions(-) diff --git a/BE/src/main/java/com/wepat/config/WebConfig.java b/BE/src/main/java/com/wepat/config/WebConfig.java index 9cdefa0..5472154 100644 --- a/BE/src/main/java/com/wepat/config/WebConfig.java +++ b/BE/src/main/java/com/wepat/config/WebConfig.java @@ -21,7 +21,8 @@ public void addInterceptors(InterceptorRegistry registry) { .addPathPatterns("/finance/**") .excludePathPatterns("/member/signup") .excludePathPatterns("/member/logout") - .excludePathPatterns("/member/signin"); + .excludePathPatterns("/member/signin") + .excludePathPatterns("/member/socialsignin"); } } diff --git a/BE/src/main/java/com/wepat/member/controller/MemberController.java b/BE/src/main/java/com/wepat/member/controller/MemberController.java index b1fb189..5009a39 100644 --- a/BE/src/main/java/com/wepat/member/controller/MemberController.java +++ b/BE/src/main/java/com/wepat/member/controller/MemberController.java @@ -56,7 +56,35 @@ public ResponseEntity signIn(String memberId, String pwd) { throw new RuntimeException(); } } + @PostMapping("/socialsignin") + @ApiOperation(value = "로그인 시도", notes = "로그인 요청을 한다.",response = MemberDto.class) + public ResponseEntity snsSignIn(String email,String id, String SNS) { + try { + Map resultMap = new HashMap<>(); + MemberDto memberResult = memberService.snsSignIn(email,id,SNS);//유저가 로그인 가능한 유저인지 확인 + String accessToken = null; + String refreshToken = null;//유저가 로그인 되면 토큰을 생성하여 저장할 String + if(memberResult != null){//로그인에서 객체를 받아왔다. + accessToken = jwtUtil.createAccessToken("memberId", id); + refreshToken = jwtUtil.createRefreshToken("memberId", id); + memberService.saveRefreshToken(id, refreshToken); + resultMap.put("access-token", accessToken); + resultMap.put("refresh-token", refreshToken); + return new ResponseEntity<>(resultMap, HttpStatus.ACCEPTED); + } else { + return new ResponseEntity<>(HttpStatus.UNAUTHORIZED); + } + } catch (IdWriteException e) { + throw new IdWriteException(e.getMessage()); + } catch (BlockMember e) { + throw new BlockMember(e.getMessage()); + } catch (PwdWriteException e) { + throw new PwdWriteException(e.getMessage()); + } catch (Exception e) { + throw new RuntimeException(); + } + } @PostMapping("/signup") @ApiOperation(value = "회원가입", notes = "정보를 받아 회원가입 시도한다.", response = MemberDto.class) public ResponseEntity signUp(MemberDto member) { @@ -84,6 +112,7 @@ public ResponseEntity findId(String email) { throw new RuntimeException(); } } + @PostMapping("/findpwd") @ApiOperation(value = "비밀번호 찾기", notes = "아이디, 이메일 인증 성공 시," + "해당 이메일로 임시 비밀번호 제공 및 임시 비밀번호로 정보 변경", response = HttpResponse.class) diff --git a/BE/src/main/java/com/wepat/member/repository/MemberRepository.java b/BE/src/main/java/com/wepat/member/repository/MemberRepository.java index 2e35ea2..d16cc73 100644 --- a/BE/src/main/java/com/wepat/member/repository/MemberRepository.java +++ b/BE/src/main/java/com/wepat/member/repository/MemberRepository.java @@ -9,6 +9,8 @@ public interface MemberRepository { void signUpWithCalendar(MemberDto member) throws ExecutionException, InterruptedException; void signUp(MemberDto member) throws ExecutionException, InterruptedException; MemberDto signIn(String memberId, String pwd) throws ExecutionException, InterruptedException; + MemberDto snsSignIn(String email, String id, String sns)throws ExecutionException, InterruptedException; + String findId(String email) throws ExecutionException, InterruptedException; void changePwdToRandom(String randomPassword, String memberId) throws ExecutionException, InterruptedException; void modifyPwd(String memberId, String pwd) throws ExecutionException, InterruptedException ; @@ -23,5 +25,7 @@ public interface MemberRepository { void deleteRefreshToken(String memberId) throws Exception; void modifyCalendarIdAlone(String memberId) throws ExecutionException, InterruptedException; + + } diff --git a/BE/src/main/java/com/wepat/member/repository/MemberRepositoryImpl.java b/BE/src/main/java/com/wepat/member/repository/MemberRepositoryImpl.java index 5079ac7..ea90671 100644 --- a/BE/src/main/java/com/wepat/member/repository/MemberRepositoryImpl.java +++ b/BE/src/main/java/com/wepat/member/repository/MemberRepositoryImpl.java @@ -169,6 +169,43 @@ public MemberDto signIn(String memberId, String pwd) throws ExecutionException, } } + @Override + public MemberDto snsSignIn(String email, String id, String sns) throws ExecutionException, InterruptedException { + final DocumentReference memDocRef = memCollection.document(id); + + ApiFuture returnTypeApiFuture = db.runTransaction(transaction -> { + + DocumentSnapshot memSnapshot = transaction.get(memDocRef).get(); + MemberEntity memberEntity = transaction.get(memDocRef).get().toObject(MemberEntity.class); + + if (!memSnapshot.exists()) { // 멤버ID가 없을 경우 + return ReturnType.IdWriteException; + + } else if (memSnapshot.toObject(MemberEntity.class).isBlock()) { //차단된 계정 + return ReturnType.BlockMember; + } +// else if ( !(memberEntity.getsocial().equals(SNS))) { //해당 SNS로 가입된 아이디아니면 +// return ReturnType.NotExistMember;//존재안하는 아이디로 판단 +// } + else { //다 통과 + return ReturnType.SUCCESS; + + } + }); + // 트랜잭션 실행 결과를 반환 + if (returnTypeApiFuture.get() == ReturnType.IdWriteException) { + throw new IdWriteException(); + } else if (returnTypeApiFuture.get() == ReturnType.BlockMember) { + throw new BlockMember(); + } else if (returnTypeApiFuture.get() == ReturnType.PwdWriteException) { + throw new PwdWriteException(); + } else { + MemberDto memberDto = memCollection.document(id).get().get().toObject(MemberDto.class); + logger.info(memberDto.toString()); + return memberDto; + } + } + @Override public String findId(String email) throws ExecutionException, InterruptedException { List memDocs = memCollection.get().get().getDocuments(); diff --git a/BE/src/main/java/com/wepat/member/service/MemberService.java b/BE/src/main/java/com/wepat/member/service/MemberService.java index 4bdc120..c50ea34 100644 --- a/BE/src/main/java/com/wepat/member/service/MemberService.java +++ b/BE/src/main/java/com/wepat/member/service/MemberService.java @@ -9,6 +9,7 @@ public interface MemberService { void signUp(MemberDto member) throws ExecutionException, InterruptedException; MemberDto signIn(String memberId, String pwd) throws ExecutionException, InterruptedException; + MemberDto snsSignIn(String email,String id, String SNS)throws ExecutionException, InterruptedException; String findId(String email) throws ExecutionException, InterruptedException; void findPwd(String memberId, String email) throws ExecutionException, InterruptedException, MessagingException; void modifyPwd(String memberId, String pwd) throws ExecutionException, InterruptedException; @@ -24,4 +25,5 @@ public interface MemberService { void saveRefreshToken(String memberId, String refreshToken) throws Exception; void modifyCalendarIdAlone(String memberId) throws ExecutionException, InterruptedException; + } diff --git a/BE/src/main/java/com/wepat/member/service/MemberServiceImpl.java b/BE/src/main/java/com/wepat/member/service/MemberServiceImpl.java index b24843b..1162901 100644 --- a/BE/src/main/java/com/wepat/member/service/MemberServiceImpl.java +++ b/BE/src/main/java/com/wepat/member/service/MemberServiceImpl.java @@ -33,6 +33,11 @@ public MemberDto signIn(String memberId, String pwd) throws ExecutionException, return memberRepository.signIn(memberId, pwd); } + @Override + public MemberDto snsSignIn(String email,String id, String SNS) throws ExecutionException, InterruptedException { + return memberRepository.snsSignIn(email, id, SNS); + } + @Override public String findId(String email) throws ExecutionException, InterruptedException { return memberRepository.findId(email); diff --git a/BE/src/main/resources/application.properties b/BE/src/main/resources/application.properties index 0029d19..f03a4dd 100644 --- a/BE/src/main/resources/application.properties +++ b/BE/src/main/resources/application.properties @@ -1,5 +1,5 @@ spring.mvc.pathmatch.matching-strategy=ant_path_matcher - +server.port= 8081 # spring boot tomcat multipart size limit spring.servlet.multipart.max-file-size=128MB spring.servlet.multipart.max-request-size=128MB From 9dd82ca33f2996d1d3ad063ab2ce13b541467626 Mon Sep 17 00:00:00 2001 From: minsu121x Date: Tue, 31 Jan 2023 03:06:03 +0900 Subject: [PATCH 2/5] =?UTF-8?q?[2023-01-31-03:05=20=EC=A1=B0=EB=AF=BC?= =?UTF-8?q?=EC=88=98]=20SNS=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20->=20=EC=97=86?= =?UTF-8?q?=EC=9C=BC=EB=A9=B4=20=EC=9E=85=EB=A0=A5=EB=B0=9B=EC=9D=80=20?= =?UTF-8?q?=EC=A0=95=EB=B3=B4+CalendarID=EB=A7=8C=20=EC=B6=94=EA=B0=80?= =?UTF-8?q?=EB=A1=9C=20=EB=B0=9B=EC=95=84=20SNS=20=ED=9A=8C=EC=9B=90?= =?UTF-8?q?=EA=B0=80=EC=9E=85(=ED=94=84=EB=A1=A0=ED=8A=B8=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20=ED=95=84=EC=9A=94)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/wepat/config/WebConfig.java | 3 +- .../main/java/com/wepat/member/MemberDto.java | 16 ++--- .../java/com/wepat/member/MemberEntity.java | 3 +- .../member/controller/MemberController.java | 22 +++++- .../member/repository/MemberRepository.java | 4 ++ .../repository/MemberRepositoryImpl.java | 68 +++++++++++++++++-- .../wepat/member/service/MemberService.java | 2 + .../member/service/MemberServiceImpl.java | 11 ++- 8 files changed, 113 insertions(+), 16 deletions(-) diff --git a/BE/src/main/java/com/wepat/config/WebConfig.java b/BE/src/main/java/com/wepat/config/WebConfig.java index 5472154..d2a8ae4 100644 --- a/BE/src/main/java/com/wepat/config/WebConfig.java +++ b/BE/src/main/java/com/wepat/config/WebConfig.java @@ -22,7 +22,8 @@ public void addInterceptors(InterceptorRegistry registry) { .excludePathPatterns("/member/signup") .excludePathPatterns("/member/logout") .excludePathPatterns("/member/signin") - .excludePathPatterns("/member/socialsignin"); + .excludePathPatterns("/member/socialsignin") + .excludePathPatterns("/member/socialsignup"); } } diff --git a/BE/src/main/java/com/wepat/member/MemberDto.java b/BE/src/main/java/com/wepat/member/MemberDto.java index b39db39..50a83b8 100644 --- a/BE/src/main/java/com/wepat/member/MemberDto.java +++ b/BE/src/main/java/com/wepat/member/MemberDto.java @@ -20,12 +20,12 @@ public class MemberDto { @ApiParam(value = "CalendarId") private String calendarId; @ApiParam(value = "Social SNS") - private int social = SOCIAL_ACCOUNT.NONE.ordinal(); -} -enum SOCIAL_ACCOUNT { - NONE, - GOOGLE, - FACEBOOK, - TWITTER, - GITHUB, + private String social ; } +//enum SOCIAL_ACCOUNT { +// NONE, +// GOOGLE, +// FACEBOOK, +// TWITTER, +// GITHUB, +//} diff --git a/BE/src/main/java/com/wepat/member/MemberEntity.java b/BE/src/main/java/com/wepat/member/MemberEntity.java index 7f94268..ec35e64 100644 --- a/BE/src/main/java/com/wepat/member/MemberEntity.java +++ b/BE/src/main/java/com/wepat/member/MemberEntity.java @@ -19,6 +19,7 @@ public MemberEntity(MemberDto member) { this.calendarId = member.getCalendarId(); this.reportList = new ArrayList<>(); this.block = new Boolean(false); + this.social=member.getSocial(); } @ApiParam(value = "사용자 비밀번호", required = true) private String pwd; @@ -33,5 +34,5 @@ public MemberEntity(MemberDto member) { @ApiParam(value = "차단당한 계정 여부") private boolean block; @ApiParam(value = "social", hidden = true) - private int social; + private String social; } diff --git a/BE/src/main/java/com/wepat/member/controller/MemberController.java b/BE/src/main/java/com/wepat/member/controller/MemberController.java index 5009a39..cd6b650 100644 --- a/BE/src/main/java/com/wepat/member/controller/MemberController.java +++ b/BE/src/main/java/com/wepat/member/controller/MemberController.java @@ -58,7 +58,7 @@ public ResponseEntity signIn(String memberId, String pwd) { } @PostMapping("/socialsignin") @ApiOperation(value = "로그인 시도", notes = "로그인 요청을 한다.",response = MemberDto.class) - public ResponseEntity snsSignIn(String email,String id, String SNS) { + public ResponseEntity socialsignin(String email,String id, String SNS) { try { Map resultMap = new HashMap<>(); MemberDto memberResult = memberService.snsSignIn(email,id,SNS);//유저가 로그인 가능한 유저인지 확인 @@ -101,6 +101,26 @@ public ResponseEntity signUp(MemberDto member) { throw new RuntimeException(e.getMessage()); } } + @PostMapping("/socialsignup") + @ApiOperation(value = "SNS회원가입", notes = "SNS에서 정보를 받아 회원가입 시도한다.", response = MemberDto.class) + public ResponseEntity socialsignup(MemberDto member) { + System.out.println(member); + System.out.println(member.toString()); + + + try { + memberService.socialsignup(member); + return new ResponseEntity<>(HttpStatus.ACCEPTED); + } catch (ExistEmailException e) { + throw new ExistEmailException(e.getMessage()); + } catch (ExistIdException e) { + throw new ExistIdException(e.getMessage()); + } catch (NotExistCalendarException e) { + throw new NotExistCalendarException(e.getMessage()); + } catch (Exception e) { + throw new RuntimeException(e.getMessage()); + } + } @PostMapping("/findid") @ApiOperation(value = "아이디 찾기", notes = "이메일을 확인하여 해당 아이디 제공", response = String.class) public ResponseEntity findId(String email) { diff --git a/BE/src/main/java/com/wepat/member/repository/MemberRepository.java b/BE/src/main/java/com/wepat/member/repository/MemberRepository.java index d16cc73..16586f9 100644 --- a/BE/src/main/java/com/wepat/member/repository/MemberRepository.java +++ b/BE/src/main/java/com/wepat/member/repository/MemberRepository.java @@ -8,6 +8,9 @@ public interface MemberRepository { void signUpWithCalendar(MemberDto member) throws ExecutionException, InterruptedException; void signUp(MemberDto member) throws ExecutionException, InterruptedException; + void socialsignup(MemberDto member)throws ExecutionException, InterruptedException; + void socialsignupWithCalendar(MemberDto member)throws ExecutionException, InterruptedException; + MemberDto signIn(String memberId, String pwd) throws ExecutionException, InterruptedException; MemberDto snsSignIn(String email, String id, String sns)throws ExecutionException, InterruptedException; @@ -27,5 +30,6 @@ public interface MemberRepository { void modifyCalendarIdAlone(String memberId) throws ExecutionException, InterruptedException; + } diff --git a/BE/src/main/java/com/wepat/member/repository/MemberRepositoryImpl.java b/BE/src/main/java/com/wepat/member/repository/MemberRepositoryImpl.java index ea90671..3ae6868 100644 --- a/BE/src/main/java/com/wepat/member/repository/MemberRepositoryImpl.java +++ b/BE/src/main/java/com/wepat/member/repository/MemberRepositoryImpl.java @@ -131,6 +131,66 @@ public void signUp(MemberDto member) throws ExecutionException, InterruptedExcep } } + @Override + public void socialsignup(MemberDto member) throws ExecutionException, InterruptedException { + + // memberId인 document 를 가져옴(없으면 생성) + final DocumentReference memDocRef = memCollection.document(member.getMemberId()); + // calendar document 를 생성 (docId 는 랜덤값) + final DocumentReference calDocRef = calCollection.document(); + + // run an asynchronous transaction + ApiFuture returnTypeApiFuture = db.runTransaction(transaction -> { + + // memberId 인 document 를 가져옴 + DocumentSnapshot memSnapshot = transaction.get(memDocRef).get(); + // memberEntity 를 db 에 추가 함 + member.setCalendarId(calDocRef.getId()); + transaction.create(memDocRef, new MemberEntity(member)); + // calendarEntity(memberId 를 갖는)를 db에 추가 함 + transaction.create(calDocRef, new CalendarEntity(member.getMemberId())); + + return ReturnType.SUCCESS; + + }); + // 트랜잭션 실행 결과를 반환 + + returnTypeApiFuture.get(); + } + + @Override + public void socialsignupWithCalendar(MemberDto member) throws ExecutionException, InterruptedException { + + final DocumentReference memDocRef = memCollection.document(member.getMemberId()); + final DocumentReference calDocRef = calCollection.document(member.getCalendarId()); + + ApiFuture returnTypeApiFuture = db.runTransaction(transaction -> { + DocumentSnapshot memSnapshot = transaction.get(memDocRef).get(); //입력한ID 값을 갖는 snapshot + DocumentSnapshot calSnapshot = transaction.get(calDocRef).get(); //입력한 캘린더ID 값을 갖는 snapshot + + if (calSnapshot.exists()) { + member.setCalendarId(calDocRef.getId()); + transaction.create(memDocRef, new MemberEntity(member)); + + //트랜잭션을 통해 얻은 calSnapshot의 member배열에 접근 + List memberId = calSnapshot.toObject(CalendarEntity.class).getMemberId(); + //회원가입한 member의 Id를 포함하여 업데이트 + memberId.add(member.getMemberId()); + transaction.update(calDocRef, "memberId", memberId); + + return ReturnType.SUCCESS; + } else { + return ReturnType.NotExistCalendarException;//잘못된 달력 아이디를 가져올 경우 + } + }); + // 트랜잭션 실행 결과를 반환 + if (returnTypeApiFuture.get()==ReturnType.NotExistCalendarException) { + throw new NotExistCalendarException(); + } else { + returnTypeApiFuture.get(); + } + } + @Override public MemberDto signIn(String memberId, String pwd) throws ExecutionException, InterruptedException { @@ -170,7 +230,7 @@ public MemberDto signIn(String memberId, String pwd) throws ExecutionException, } @Override - public MemberDto snsSignIn(String email, String id, String sns) throws ExecutionException, InterruptedException { + public MemberDto snsSignIn(String email, String id, String SNS) throws ExecutionException, InterruptedException { final DocumentReference memDocRef = memCollection.document(id); ApiFuture returnTypeApiFuture = db.runTransaction(transaction -> { @@ -184,9 +244,9 @@ public MemberDto snsSignIn(String email, String id, String sns) throws Execution } else if (memSnapshot.toObject(MemberEntity.class).isBlock()) { //차단된 계정 return ReturnType.BlockMember; } -// else if ( !(memberEntity.getsocial().equals(SNS))) { //해당 SNS로 가입된 아이디아니면 -// return ReturnType.NotExistMember;//존재안하는 아이디로 판단 -// } + else if (memberEntity.getSocial().equals(SNS)) { //해당 SNS로 가입된 아이디아니면 + return ReturnType.NotExistMember;//존재안하는 아이디로 판단 + } else { //다 통과 return ReturnType.SUCCESS; diff --git a/BE/src/main/java/com/wepat/member/service/MemberService.java b/BE/src/main/java/com/wepat/member/service/MemberService.java index c50ea34..a9c3e9b 100644 --- a/BE/src/main/java/com/wepat/member/service/MemberService.java +++ b/BE/src/main/java/com/wepat/member/service/MemberService.java @@ -26,4 +26,6 @@ public interface MemberService { void modifyCalendarIdAlone(String memberId) throws ExecutionException, InterruptedException; + void socialsignup(MemberDto member)throws ExecutionException, InterruptedException; + } diff --git a/BE/src/main/java/com/wepat/member/service/MemberServiceImpl.java b/BE/src/main/java/com/wepat/member/service/MemberServiceImpl.java index 1162901..12ff5b4 100644 --- a/BE/src/main/java/com/wepat/member/service/MemberServiceImpl.java +++ b/BE/src/main/java/com/wepat/member/service/MemberServiceImpl.java @@ -27,7 +27,15 @@ public void signUp(MemberDto member) throws ExecutionException, InterruptedExcep memberRepository.signUpWithCalendar(member); } } - + @Override + public void socialsignup(MemberDto member) throws ExecutionException, InterruptedException { + //프론트에서 SNS 정보에서 필요한 정보를 객체로 생성해 받았다고 가정 ->테스트 해보려했는데 프론트를 못짜서 실패 2023-01-31-02:00 + if (member.getCalendarId() == null) { + memberRepository.socialsignup(member); + } else { + memberRepository.socialsignupWithCalendar(member); + } + } @Override public MemberDto signIn(String memberId, String pwd) throws ExecutionException, InterruptedException { return memberRepository.signIn(memberId, pwd); @@ -125,4 +133,5 @@ public void modifyCalendarIdAlone(String memberId) throws ExecutionException, In memberRepository.modifyCalendarIdAlone(memberId); } + } From d0ebe3e1548a98ed2dd45d5cfd3c7db1204d0d6d Mon Sep 17 00:00:00 2001 From: minsu121x Date: Wed, 1 Feb 2023 01:09:37 +0900 Subject: [PATCH 3/5] =?UTF-8?q?[2023-02-01-01:08=20=EC=A1=B0=EB=AF=BC?= =?UTF-8?q?=EC=88=98]=20SNS=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20-=EA=B5=AC?= =?UTF-8?q?=EA=B8=80=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=EC=95=88=EB=90=98?= =?UTF-8?q?=EB=8D=98=20=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0=20-?= =?UTF-8?q?=EB=B3=80=EC=88=98=EB=AA=85=20=ED=86=B5=EC=9D=BC=20=EB=B0=8F=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=A0=95=EB=A6=AC=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/wepat/config/WebConfig.java | 1 + .../main/java/com/wepat/member/MemberDto.java | 16 ++-- .../java/com/wepat/member/MemberEntity.java | 4 +- .../member/controller/MemberController.java | 16 ++-- .../member/repository/MemberRepository.java | 3 +- .../repository/MemberRepositoryImpl.java | 83 ++++++------------- .../wepat/member/service/MemberService.java | 5 +- .../member/service/MemberServiceImpl.java | 12 +-- 8 files changed, 50 insertions(+), 90 deletions(-) diff --git a/BE/src/main/java/com/wepat/config/WebConfig.java b/BE/src/main/java/com/wepat/config/WebConfig.java index d2a8ae4..11fb2ec 100644 --- a/BE/src/main/java/com/wepat/config/WebConfig.java +++ b/BE/src/main/java/com/wepat/config/WebConfig.java @@ -1,5 +1,6 @@ package com.wepat.config; + import com.wepat.aop.interceptor.JwtIntercepptor; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; diff --git a/BE/src/main/java/com/wepat/member/MemberDto.java b/BE/src/main/java/com/wepat/member/MemberDto.java index 50a83b8..b39db39 100644 --- a/BE/src/main/java/com/wepat/member/MemberDto.java +++ b/BE/src/main/java/com/wepat/member/MemberDto.java @@ -20,12 +20,12 @@ public class MemberDto { @ApiParam(value = "CalendarId") private String calendarId; @ApiParam(value = "Social SNS") - private String social ; + private int social = SOCIAL_ACCOUNT.NONE.ordinal(); +} +enum SOCIAL_ACCOUNT { + NONE, + GOOGLE, + FACEBOOK, + TWITTER, + GITHUB, } -//enum SOCIAL_ACCOUNT { -// NONE, -// GOOGLE, -// FACEBOOK, -// TWITTER, -// GITHUB, -//} diff --git a/BE/src/main/java/com/wepat/member/MemberEntity.java b/BE/src/main/java/com/wepat/member/MemberEntity.java index ec35e64..d473722 100644 --- a/BE/src/main/java/com/wepat/member/MemberEntity.java +++ b/BE/src/main/java/com/wepat/member/MemberEntity.java @@ -18,7 +18,7 @@ public MemberEntity(MemberDto member) { this.email = member.getEmail(); this.calendarId = member.getCalendarId(); this.reportList = new ArrayList<>(); - this.block = new Boolean(false); + this.block = false; this.social=member.getSocial(); } @ApiParam(value = "사용자 비밀번호", required = true) @@ -34,5 +34,5 @@ public MemberEntity(MemberDto member) { @ApiParam(value = "차단당한 계정 여부") private boolean block; @ApiParam(value = "social", hidden = true) - private String social; + private int social; } diff --git a/BE/src/main/java/com/wepat/member/controller/MemberController.java b/BE/src/main/java/com/wepat/member/controller/MemberController.java index cd6b650..452c14a 100644 --- a/BE/src/main/java/com/wepat/member/controller/MemberController.java +++ b/BE/src/main/java/com/wepat/member/controller/MemberController.java @@ -58,16 +58,16 @@ public ResponseEntity signIn(String memberId, String pwd) { } @PostMapping("/socialsignin") @ApiOperation(value = "로그인 시도", notes = "로그인 요청을 한다.",response = MemberDto.class) - public ResponseEntity socialsignin(String email,String id, String SNS) { + public ResponseEntity socialsignin(String memberId, int social) { try { Map resultMap = new HashMap<>(); - MemberDto memberResult = memberService.snsSignIn(email,id,SNS);//유저가 로그인 가능한 유저인지 확인 + MemberDto memberResult = memberService.socialSignIn(memberId,social);//유저가 로그인 가능한 유저인지 확인 String accessToken = null; String refreshToken = null;//유저가 로그인 되면 토큰을 생성하여 저장할 String if(memberResult != null){//로그인에서 객체를 받아왔다. - accessToken = jwtUtil.createAccessToken("memberId", id); - refreshToken = jwtUtil.createRefreshToken("memberId", id); - memberService.saveRefreshToken(id, refreshToken); + accessToken = jwtUtil.createAccessToken("memberId", memberId); + refreshToken = jwtUtil.createRefreshToken("memberId", memberId); + memberService.saveRefreshToken(memberId, refreshToken); resultMap.put("access-token", accessToken); resultMap.put("refresh-token", refreshToken); @@ -87,7 +87,7 @@ public ResponseEntity socialsignin(String email,String id, String SNS) { } @PostMapping("/signup") @ApiOperation(value = "회원가입", notes = "정보를 받아 회원가입 시도한다.", response = MemberDto.class) - public ResponseEntity signUp(MemberDto member) { + public ResponseEntity signUp(@RequestBody MemberDto member) { try { memberService.signUp(member); return new ResponseEntity<>(HttpStatus.ACCEPTED); @@ -104,10 +104,6 @@ public ResponseEntity signUp(MemberDto member) { @PostMapping("/socialsignup") @ApiOperation(value = "SNS회원가입", notes = "SNS에서 정보를 받아 회원가입 시도한다.", response = MemberDto.class) public ResponseEntity socialsignup(MemberDto member) { - System.out.println(member); - System.out.println(member.toString()); - - try { memberService.socialsignup(member); return new ResponseEntity<>(HttpStatus.ACCEPTED); diff --git a/BE/src/main/java/com/wepat/member/repository/MemberRepository.java b/BE/src/main/java/com/wepat/member/repository/MemberRepository.java index 16586f9..3bcd1ed 100644 --- a/BE/src/main/java/com/wepat/member/repository/MemberRepository.java +++ b/BE/src/main/java/com/wepat/member/repository/MemberRepository.java @@ -9,10 +9,9 @@ public interface MemberRepository { void signUpWithCalendar(MemberDto member) throws ExecutionException, InterruptedException; void signUp(MemberDto member) throws ExecutionException, InterruptedException; void socialsignup(MemberDto member)throws ExecutionException, InterruptedException; - void socialsignupWithCalendar(MemberDto member)throws ExecutionException, InterruptedException; MemberDto signIn(String memberId, String pwd) throws ExecutionException, InterruptedException; - MemberDto snsSignIn(String email, String id, String sns)throws ExecutionException, InterruptedException; + MemberDto socialsignin( String id, int sns)throws ExecutionException, InterruptedException; String findId(String email) throws ExecutionException, InterruptedException; void changePwdToRandom(String randomPassword, String memberId) throws ExecutionException, InterruptedException; diff --git a/BE/src/main/java/com/wepat/member/repository/MemberRepositoryImpl.java b/BE/src/main/java/com/wepat/member/repository/MemberRepositoryImpl.java index 3ae6868..d749979 100644 --- a/BE/src/main/java/com/wepat/member/repository/MemberRepositoryImpl.java +++ b/BE/src/main/java/com/wepat/member/repository/MemberRepositoryImpl.java @@ -154,89 +154,59 @@ public void socialsignup(MemberDto member) throws ExecutionException, Interrupte }); // 트랜잭션 실행 결과를 반환 - returnTypeApiFuture.get(); } - @Override - public void socialsignupWithCalendar(MemberDto member) throws ExecutionException, InterruptedException { - - final DocumentReference memDocRef = memCollection.document(member.getMemberId()); - final DocumentReference calDocRef = calCollection.document(member.getCalendarId()); - - ApiFuture returnTypeApiFuture = db.runTransaction(transaction -> { - DocumentSnapshot memSnapshot = transaction.get(memDocRef).get(); //입력한ID 값을 갖는 snapshot - DocumentSnapshot calSnapshot = transaction.get(calDocRef).get(); //입력한 캘린더ID 값을 갖는 snapshot - if (calSnapshot.exists()) { - member.setCalendarId(calDocRef.getId()); - transaction.create(memDocRef, new MemberEntity(member)); - - //트랜잭션을 통해 얻은 calSnapshot의 member배열에 접근 - List memberId = calSnapshot.toObject(CalendarEntity.class).getMemberId(); - //회원가입한 member의 Id를 포함하여 업데이트 - memberId.add(member.getMemberId()); - transaction.update(calDocRef, "memberId", memberId); - - return ReturnType.SUCCESS; - } else { - return ReturnType.NotExistCalendarException;//잘못된 달력 아이디를 가져올 경우 - } - }); - // 트랜잭션 실행 결과를 반환 - if (returnTypeApiFuture.get()==ReturnType.NotExistCalendarException) { - throw new NotExistCalendarException(); - } else { - returnTypeApiFuture.get(); - } - } @Override public MemberDto signIn(String memberId, String pwd) throws ExecutionException, InterruptedException { final DocumentReference memDocRef = memCollection.document(memberId); - ApiFuture returnTypeApiFuture = db.runTransaction(transaction -> { + ApiFuture future = db.runTransaction(transaction -> { DocumentSnapshot memSnapshot = transaction.get(memDocRef).get(); - MemberEntity memberEntity = transaction.get(memDocRef).get().toObject(MemberEntity.class); + MemberDto memberDto = transaction.get(memDocRef).get().toObject(MemberDto.class); if (!memSnapshot.exists()) { // 멤버ID가 없을 경우 return ReturnType.IdWriteException; + } else if (memSnapshot.toObject(MemberEntity.class).getSocial() != 0) { //SNS로 가입된 계정 + return ReturnType.NotExistMember; } else if (memSnapshot.toObject(MemberEntity.class).isBlock()) { //차단된 계정 return ReturnType.BlockMember; - - } else if (memSnapshot.exists() && memberEntity.getPwd().equals(pwd)) { //해당 멤버ID가 있고, pwd가 같다면 로그인 성공 - return ReturnType.SUCCESS; - + } else if (memSnapshot.exists() && memberDto.getPwd().equals(pwd)) { //해당 멤버ID가 있고, pwd가 같다면 로그인 성공 + return memberDto; } else { //비밀번호가 다르다면 return ReturnType.PwdWriteException; } }); // 트랜잭션 실행 결과를 반환 - if (returnTypeApiFuture.get() == ReturnType.IdWriteException) { + if (future.get() == ReturnType.IdWriteException) { throw new IdWriteException(); - } else if (returnTypeApiFuture.get() == ReturnType.BlockMember) { + } else if (future.get() == ReturnType.BlockMember) { throw new BlockMember(); - } else if (returnTypeApiFuture.get() == ReturnType.PwdWriteException) { + } else if (future.get() == ReturnType.PwdWriteException) { throw new PwdWriteException(); - } else { - MemberDto memberDto = memCollection.document(memberId).get().get().toObject(MemberDto.class); - logger.info(memberDto.toString()); - return memberDto; + } + else if (future.get() == ReturnType.NotExistMember) { + throw new NotExistMember(); + } + else { + return (MemberDto) future.get(); } } @Override - public MemberDto snsSignIn(String email, String id, String SNS) throws ExecutionException, InterruptedException { - final DocumentReference memDocRef = memCollection.document(id); + public MemberDto socialsignin(String memberId, int social) throws ExecutionException, InterruptedException { + final DocumentReference memDocRef = memCollection.document(memberId); - ApiFuture returnTypeApiFuture = db.runTransaction(transaction -> { + ApiFuture future = db.runTransaction(transaction -> { DocumentSnapshot memSnapshot = transaction.get(memDocRef).get(); - MemberEntity memberEntity = transaction.get(memDocRef).get().toObject(MemberEntity.class); + MemberDto memberDto = transaction.get(memDocRef).get().toObject(MemberDto.class); if (!memSnapshot.exists()) { // 멤버ID가 없을 경우 return ReturnType.IdWriteException; @@ -244,25 +214,22 @@ public MemberDto snsSignIn(String email, String id, String SNS) throws Execution } else if (memSnapshot.toObject(MemberEntity.class).isBlock()) { //차단된 계정 return ReturnType.BlockMember; } - else if (memberEntity.getSocial().equals(SNS)) { //해당 SNS로 가입된 아이디아니면 + else if (memberDto.getSocial() == social) { //해당 SNS로 가입된 아이디아니면 return ReturnType.NotExistMember;//존재안하는 아이디로 판단 } else { //다 통과 - return ReturnType.SUCCESS; - + return memberDto; } }); // 트랜잭션 실행 결과를 반환 - if (returnTypeApiFuture.get() == ReturnType.IdWriteException) { + if (future.get() == ReturnType.IdWriteException) { throw new IdWriteException(); - } else if (returnTypeApiFuture.get() == ReturnType.BlockMember) { + } else if (future.get() == ReturnType.BlockMember) { throw new BlockMember(); - } else if (returnTypeApiFuture.get() == ReturnType.PwdWriteException) { + } else if (future.get() == ReturnType.PwdWriteException) { throw new PwdWriteException(); } else { - MemberDto memberDto = memCollection.document(id).get().get().toObject(MemberDto.class); - logger.info(memberDto.toString()); - return memberDto; + return (MemberDto) future.get(); } } diff --git a/BE/src/main/java/com/wepat/member/service/MemberService.java b/BE/src/main/java/com/wepat/member/service/MemberService.java index a9c3e9b..9812956 100644 --- a/BE/src/main/java/com/wepat/member/service/MemberService.java +++ b/BE/src/main/java/com/wepat/member/service/MemberService.java @@ -8,8 +8,9 @@ public interface MemberService { void signUp(MemberDto member) throws ExecutionException, InterruptedException; + void socialsignup(MemberDto member)throws ExecutionException, InterruptedException; MemberDto signIn(String memberId, String pwd) throws ExecutionException, InterruptedException; - MemberDto snsSignIn(String email,String id, String SNS)throws ExecutionException, InterruptedException; + MemberDto socialSignIn(String memberId, int social)throws ExecutionException, InterruptedException; String findId(String email) throws ExecutionException, InterruptedException; void findPwd(String memberId, String email) throws ExecutionException, InterruptedException, MessagingException; void modifyPwd(String memberId, String pwd) throws ExecutionException, InterruptedException; @@ -26,6 +27,6 @@ public interface MemberService { void modifyCalendarIdAlone(String memberId) throws ExecutionException, InterruptedException; - void socialsignup(MemberDto member)throws ExecutionException, InterruptedException; + } diff --git a/BE/src/main/java/com/wepat/member/service/MemberServiceImpl.java b/BE/src/main/java/com/wepat/member/service/MemberServiceImpl.java index 12ff5b4..e9159b4 100644 --- a/BE/src/main/java/com/wepat/member/service/MemberServiceImpl.java +++ b/BE/src/main/java/com/wepat/member/service/MemberServiceImpl.java @@ -29,12 +29,8 @@ public void signUp(MemberDto member) throws ExecutionException, InterruptedExcep } @Override public void socialsignup(MemberDto member) throws ExecutionException, InterruptedException { - //프론트에서 SNS 정보에서 필요한 정보를 객체로 생성해 받았다고 가정 ->테스트 해보려했는데 프론트를 못짜서 실패 2023-01-31-02:00 - if (member.getCalendarId() == null) { - memberRepository.socialsignup(member); - } else { - memberRepository.socialsignupWithCalendar(member); - } + memberRepository.socialsignup(member);//무조건 아이디생성 + } @Override public MemberDto signIn(String memberId, String pwd) throws ExecutionException, InterruptedException { @@ -42,8 +38,8 @@ public MemberDto signIn(String memberId, String pwd) throws ExecutionException, } @Override - public MemberDto snsSignIn(String email,String id, String SNS) throws ExecutionException, InterruptedException { - return memberRepository.snsSignIn(email, id, SNS); + public MemberDto socialSignIn(String memberId, int social) throws ExecutionException, InterruptedException { + return memberRepository.socialsignin(memberId, social); } @Override From bd6224a8df0b701c7a90a5439745b2c1c6c7a00b Mon Sep 17 00:00:00 2001 From: minsu121x Date: Wed, 1 Feb 2023 09:24:48 +0900 Subject: [PATCH 4/5] =?UTF-8?q?[2023-02-01-01:08=20=EC=A1=B0=EB=AF=BC?= =?UTF-8?q?=EC=88=98]=20SNS=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20-=EA=B5=AC?= =?UTF-8?q?=EA=B8=80=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=EC=95=88=EB=90=98?= =?UTF-8?q?=EB=8D=98=20=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0=20-?= =?UTF-8?q?=EB=B3=80=EC=88=98=EB=AA=85=20=ED=86=B5=EC=9D=BC=20=EB=B0=8F=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=A0=95=EB=A6=AC=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/MemberRepositoryImpl.java | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/BE/src/main/java/com/wepat/member/repository/MemberRepositoryImpl.java b/BE/src/main/java/com/wepat/member/repository/MemberRepositoryImpl.java index d749979..af706a4 100644 --- a/BE/src/main/java/com/wepat/member/repository/MemberRepositoryImpl.java +++ b/BE/src/main/java/com/wepat/member/repository/MemberRepositoryImpl.java @@ -203,10 +203,10 @@ else if (future.get() == ReturnType.NotExistMember) { public MemberDto socialsignin(String memberId, int social) throws ExecutionException, InterruptedException { final DocumentReference memDocRef = memCollection.document(memberId); - ApiFuture future = db.runTransaction(transaction -> { + ApiFuture returnTypeApiFuture = db.runTransaction(transaction -> { DocumentSnapshot memSnapshot = transaction.get(memDocRef).get(); - MemberDto memberDto = transaction.get(memDocRef).get().toObject(MemberDto.class); + MemberEntity memberEntity = transaction.get(memDocRef).get().toObject(MemberEntity.class); if (!memSnapshot.exists()) { // 멤버ID가 없을 경우 return ReturnType.IdWriteException; @@ -214,22 +214,25 @@ public MemberDto socialsignin(String memberId, int social) throws ExecutionExcep } else if (memSnapshot.toObject(MemberEntity.class).isBlock()) { //차단된 계정 return ReturnType.BlockMember; } - else if (memberDto.getSocial() == social) { //해당 SNS로 가입된 아이디아니면 - return ReturnType.NotExistMember;//존재안하는 아이디로 판단 + else if ( !(memberEntity.getSocial()==(social))) { //해당 SNS로 가입된 아이디아니면 + return ReturnType.NotExistMember;//존재안하는 아이디로 판단 } - else { //다 통과 - return memberDto; + else { //다 통과 + return ReturnType.SUCCESS; + } }); // 트랜잭션 실행 결과를 반환 - if (future.get() == ReturnType.IdWriteException) { + if (returnTypeApiFuture.get() == ReturnType.IdWriteException) { throw new IdWriteException(); - } else if (future.get() == ReturnType.BlockMember) { + } else if (returnTypeApiFuture.get() == ReturnType.BlockMember) { throw new BlockMember(); - } else if (future.get() == ReturnType.PwdWriteException) { + } else if (returnTypeApiFuture.get() == ReturnType.PwdWriteException) { throw new PwdWriteException(); } else { - return (MemberDto) future.get(); + MemberDto memberDto = memCollection.document(memberId).get().get().toObject(MemberDto.class); + logger.info(memberDto.toString()); + return memberDto; } } From e81cdb03d1cd4897adf8b3dd1753aefdedd3fc63 Mon Sep 17 00:00:00 2001 From: minsu121x Date: Wed, 1 Feb 2023 11:15:28 +0900 Subject: [PATCH 5/5] =?UTF-8?q?[2023-02-01-11:15=20=EC=A1=B0=EB=AF=BC?= =?UTF-8?q?=EC=88=98]=20SNS=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20-=EA=B5=AC?= =?UTF-8?q?=EA=B8=80=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=EC=95=88=EB=90=98?= =?UTF-8?q?=EB=8D=98=20=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0=20-?= =?UTF-8?q?=EB=B3=80=EC=88=98=EB=AA=85=20=ED=86=B5=EC=9D=BC=20=EB=B0=8F=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=A0=95=EB=A6=AC=20=EC=99=84=EB=A3=8C=20?= =?UTF-8?q?-=ED=91=B8=EC=89=AC=EA=B0=80=20=EC=95=88=EB=8F=BC=EC=9A=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/wepat/member/repository/MemberRepositoryImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BE/src/main/java/com/wepat/member/repository/MemberRepositoryImpl.java b/BE/src/main/java/com/wepat/member/repository/MemberRepositoryImpl.java index af706a4..9d6842a 100644 --- a/BE/src/main/java/com/wepat/member/repository/MemberRepositoryImpl.java +++ b/BE/src/main/java/com/wepat/member/repository/MemberRepositoryImpl.java @@ -222,7 +222,7 @@ else if ( !(memberEntity.getSocial()==(social))) { //해당 SNS로 가입된 아 } }); - // 트랜잭션 실행 결과를 반환 + // 트랜잭션 실행 결과를 반환ㅐ if (returnTypeApiFuture.get() == ReturnType.IdWriteException) { throw new IdWriteException(); } else if (returnTypeApiFuture.get() == ReturnType.BlockMember) {