Skip to content

Commit 2f9ac42

Browse files
committed
[Fix] #16 회원탈퇴 로직 오류 수정
1 parent f6676c4 commit 2f9ac42

2 files changed

Lines changed: 19 additions & 3 deletions

File tree

src/main/java/com/WhoIsRoom/WhoIs_Server/domain/member/repository/MemberRepository.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,10 @@ public interface MemberRepository extends JpaRepository<Member, Long> {
2525
Optional<Member> findByUserAndClub(User user, Club club);
2626
List<Member> findByUser(User user);
2727
List<Member> findAllByClubAndIsExistTrue(Club club);
28+
29+
@Modifying(clearAutomatically = true, flushAutomatically = true)
30+
@Query("delete from Member m where m.user.id = :userId")
31+
void deleteByUserId(@Param("userId") Long userId);
32+
33+
boolean existsByUserId(Long userId);
2834
}

src/main/java/com/WhoIsRoom/WhoIs_Server/domain/user/service/UserService.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
import org.springframework.security.crypto.password.PasswordEncoder;
2626
import org.springframework.stereotype.Service;
2727
import org.springframework.transaction.annotation.Transactional;
28+
import org.springframework.transaction.support.TransactionSynchronization;
29+
import org.springframework.transaction.support.TransactionSynchronizationManager;
2830

2931
import java.net.http.HttpRequest;
3032
import java.util.*;
@@ -178,17 +180,25 @@ private void validateClubExistence(Set<Long> clubIds) {
178180
}
179181
}
180182

183+
@Transactional
181184
public void deleteAccount (HttpServletRequest request, Long userId) {
182185
User user = userRepository.findById(userId)
183186
.orElseThrow(() -> new BusinessException(ErrorCode.USER_NOT_FOUND));
184187

188+
if (memberRepository.existsByUserId(userId)) {
189+
memberRepository.deleteByUserId(userId);
190+
}
191+
185192
userRepository.delete(user);
186193

187194
String accessToken = jwtUtil.extractAccessToken(request)
188195
.orElseThrow(() -> new CustomAuthenticationException(ErrorCode.SECURITY_INVALID_ACCESS_TOKEN));
189-
if (accessToken != null) {
190-
jwtService.invalidAccessToken(accessToken); // Redis에 blacklist 저장
191-
}
196+
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
197+
@Override
198+
public void afterCommit() {
199+
jwtService.invalidAccessToken(accessToken);
200+
}
201+
});
192202

193203
SecurityContextHolder.clearContext();
194204
}

0 commit comments

Comments
 (0)