Skip to content

Commit b254bc8

Browse files
committed
fix: withdrawal error
1 parent 99aba49 commit b254bc8

File tree

9 files changed

+65
-21
lines changed

9 files changed

+65
-21
lines changed

src/main/java/ttakkeun/ttakkeun_server/dto/auth/apple/AppleRevokeRequest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@
1010
public class AppleRevokeRequest {
1111
private String client_id;
1212
private String client_secret;
13-
private String refresh_token;
14-
private String token_type;
13+
private String token;
14+
private String token_type_hint;
1515
}

src/main/java/ttakkeun/ttakkeun_server/dto/auth/apple/AppleTokenRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@
1010
public class AppleTokenRequest {
1111
private String client_id;
1212
private String client_secret;
13-
private String authorization_code;
13+
private String code;
1414
private String grant_type;
1515
}

src/main/java/ttakkeun/ttakkeun_server/entity/Member.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.springframework.security.core.userdetails.UserDetails;
77
import ttakkeun.ttakkeun_server.entity.common.BaseEntity;
88
import ttakkeun.ttakkeun_server.entity.enums.LoginType;
9+
import ttakkeun.ttakkeun_server.entity.enums.MemberStatus;
910

1011
import java.time.LocalDateTime;
1112
import java.util.Collection;
@@ -43,6 +44,11 @@ public class Member extends BaseEntity implements UserDetails {
4344
@Column(nullable = false)
4445
private LocalDateTime refreshTokenExpiresAt; //토큰 만료 일자
4546

47+
@Enumerated(EnumType.STRING)
48+
@Column(nullable = false)
49+
@Builder.Default // Set default value for builder
50+
private MemberStatus status = MemberStatus.ACTIVE;
51+
4652
// refreshToken 재발급
4753
public void updateRefreshToken(String refreshToken) {
4854
this.refreshToken = refreshToken;
@@ -61,6 +67,15 @@ public void changeUsername(String newUsername) {
6167
this.username = newUsername;
6268
}
6369

70+
//탈퇴
71+
public void withdraw() {
72+
this.status = MemberStatus.WITHDRAWN;
73+
this.appleSub = null;
74+
this.kakaoUserId = null;
75+
this.refreshToken = "WITHDRAWN"; // Refresh token 무효화
76+
this.refreshTokenExpiresAt = LocalDateTime.now();
77+
}
78+
6479
@Override
6580
public Collection<? extends GrantedAuthority> getAuthorities() {
6681
return List.of();
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package ttakkeun.ttakkeun_server.entity.enums;
2+
3+
public enum MemberStatus {
4+
ACTIVE, // 활성 회원 (기본값)
5+
WITHDRAWN // 탈퇴한 회원
6+
}

src/main/java/ttakkeun/ttakkeun_server/repository/InquiryRepository.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,6 @@
1212
@Repository
1313
public interface InquiryRepository extends JpaRepository<Inquiry, Long> {
1414
List<Inquiry> findByMember(Member member);
15+
16+
void deleteAllByMember(Member member);
1517
}

src/main/java/ttakkeun/ttakkeun_server/repository/ReportTipRepository.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
import org.springframework.data.jpa.repository.JpaRepository;
44

5+
import ttakkeun.ttakkeun_server.entity.Member;
56
import ttakkeun.ttakkeun_server.entity.ReportTip;
67

78
public interface ReportTipRepository extends JpaRepository<ReportTip, Long> {
9+
void deleteAllByMember(Member member);
810
}

src/main/java/ttakkeun/ttakkeun_server/service/MemberService.java

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@
2020
public class MemberService {
2121
private final MemberRepository memberRepository;
2222
private final PetRepository petRepository;
23-
23+
private final PointRepository pointRepository;
24+
private final InquiryRepository inquiryRepository;
25+
private final ReportTipRepository reportTipRepository;
2426
private final PetService petService;
2527
private final LikeTipService likeTipService;
2628
private final LikeService likeService;
@@ -42,9 +44,16 @@ public void deleteMember(Member member) {
4244
removeTipAuthor(member);
4345
//스크랩한 팁 삭제
4446
deleteScrapTip(member);
47+
//포인트 삭제
48+
deletePoint(member);
49+
//문의하기 삭제
50+
deleteInquiry(member);
51+
//팁 신고하기 삭제
52+
deleteReportTip(member);
4553

46-
//멤버 삭제
47-
memberRepository.deleteById(member.getMemberId());
54+
//멤버 탈퇴 처리
55+
member.withdraw();
56+
memberRepository.save(member);
4857
}
4958

5059
public void deletePet(Member member) {
@@ -74,6 +83,18 @@ public void deleteLikeProduct(Member member) {
7483
likeService.deleteAllByMember(member);
7584
}
7685

86+
public void deletePoint(Member member) {
87+
pointRepository.deleteByMember(member);
88+
}
89+
90+
public void deleteInquiry(Member member) {
91+
inquiryRepository.deleteAllByMember(member);
92+
}
93+
94+
public void deleteReportTip(Member member) {
95+
reportTipRepository.deleteAllByMember(member);
96+
}
97+
7798
public Member getMemberInfo(Long memberId) {
7899
return memberRepository.findByMemberId(memberId)
79100
.orElseThrow(() -> new IllegalArgumentException("존재하지 않는 사용자입니다."));

src/main/java/ttakkeun/ttakkeun_server/service/auth/OAuthService.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -171,22 +171,18 @@ public LoginResponseDto appleSignUp(AppleSignUpRequestDto appleSignUpRequestDto)
171171
public void appleDelete(Member member, String code, WithdrawalRequestDto withdrawalDto) {
172172
try {
173173
String clientSecret = appleClientSecretGenerator.createClientSecret();
174+
log.info("appleDelete client secret: {}", clientSecret);
175+
//
174176
String refreshToken = appleOAuthProvider.getAppleRefreshToken(code, clientSecret);
175-
String idToken = appleOAuthProvider.getAppleIdToken(code, clientSecret);
176-
Claims claims = validateAndGetClaims(idToken);
177-
String sub = claims.getSubject();
178-
179-
// 회원 정보 일치 검사
180-
if (!sub.equals(member.getAppleSub())) {
181-
throw new MemberHandler(MEMBER_NOT_MATCH);
182-
}
177+
log.info("appleDelete refresh token: {}", refreshToken);
183178

184179
AppleRevokeRequest appleRevokeRequest = AppleRevokeRequest.builder()
185180
.client_id(clientId)
186-
.refresh_token(refreshToken)
181+
.token(refreshToken)
187182
.client_secret(clientSecret)
188-
.token_type("REFRESH_TOKEN")
183+
.token_type_hint("refresh_token")
189184
.build();
185+
log.info("appleDelete apple revoke request: {}", appleRevokeRequest);
190186
appleAuthClient.revoke(appleRevokeRequest);
191187
} catch (HttpClientErrorException e) {
192188
throw new RuntimeException("Apple Revoke Error");

src/main/java/ttakkeun/ttakkeun_server/utils/AppleOAuthProvider.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
package ttakkeun.ttakkeun_server.utils;
22

33
import lombok.RequiredArgsConstructor;
4+
import lombok.extern.slf4j.Slf4j;
45
import org.springframework.beans.factory.annotation.Value;
56
import org.springframework.stereotype.Component;
67
import ttakkeun.ttakkeun_server.dto.auth.apple.AppleAuthClient;
78
import ttakkeun.ttakkeun_server.dto.auth.apple.AppleTokenRequest;
9+
import ttakkeun.ttakkeun_server.dto.auth.apple.AppleTokenResponse;
810

11+
@Slf4j
912
@Component
1013
@RequiredArgsConstructor
1114
public class AppleOAuthProvider {
@@ -18,19 +21,18 @@ public String getAppleRefreshToken(String code, String clientSecret) {
1821
AppleTokenRequest appleTokenRequest = AppleTokenRequest.builder()
1922
.client_id(clientId)
2023
.client_secret(clientSecret)
21-
.authorization_code(code)
22-
.grant_type("AUTHORIZATION_CODE")
24+
.code(code)
25+
.grant_type("authorization_code")
2326
.build();
24-
2527
return appleAuthClient.findAppleToken(appleTokenRequest).refreshToken();
2628
}
2729

2830
public String getAppleIdToken(String code, String clientSecret) {
2931
AppleTokenRequest appleTokenRequest = AppleTokenRequest.builder()
3032
.client_id(clientId)
3133
.client_secret(clientSecret)
32-
.authorization_code(code)
33-
.grant_type("AUTHORIZATION_CODE")
34+
.code(code)
35+
.grant_type("authorization_code")
3436
.build();
3537

3638
return appleAuthClient.findAppleToken(appleTokenRequest).idToken();

0 commit comments

Comments
 (0)