diff --git a/server/src/main/java/sunflower/server/application/SessionService.java b/server/src/main/java/sunflower/server/application/SessionService.java index c726785..315eacc 100644 --- a/server/src/main/java/sunflower/server/application/SessionService.java +++ b/server/src/main/java/sunflower/server/application/SessionService.java @@ -38,7 +38,7 @@ public void extendTime(final Long sessionId) { @Transactional public void logout(final Long memberId) { - final Session session = sessionRepository.getByMemberId(memberId); + final Session session = sessionRepository.getByMemberIdAndIsLoggedInTrue(memberId); session.logout(); } } diff --git a/server/src/main/java/sunflower/server/entity/Session.java b/server/src/main/java/sunflower/server/entity/Session.java index af6881f..502bdfb 100644 --- a/server/src/main/java/sunflower/server/entity/Session.java +++ b/server/src/main/java/sunflower/server/entity/Session.java @@ -26,6 +26,7 @@ public class Session { private Long memberId; private LocalDateTime createdAt; private LocalDateTime expiredAt; + private Boolean isLoggedIn = Boolean.TRUE; private Boolean deleted = Boolean.FALSE; public Session(final Long memberId) { @@ -43,7 +44,7 @@ public static Session of(final Long memberId) { } public boolean isValid() { - if (this.deleted == Boolean.TRUE) { + if (!this.isLoggedIn) { return false; } // TODO: 현재는 만료 시간만 체크중이지만, 이후에 IP 등 다양한 검증 로직 추가 @@ -57,6 +58,6 @@ public void extendTime() { } public void logout() { - this.deleted = Boolean.TRUE; + this.isLoggedIn = Boolean.FALSE; } } diff --git a/server/src/main/java/sunflower/server/repository/SessionRepository.java b/server/src/main/java/sunflower/server/repository/SessionRepository.java index 7a2cb9a..472bcdf 100644 --- a/server/src/main/java/sunflower/server/repository/SessionRepository.java +++ b/server/src/main/java/sunflower/server/repository/SessionRepository.java @@ -16,13 +16,15 @@ default Session getById(final Long id) { return session.get(); } - default Session getByMemberId(final Long memberId) { - final Optional session = findByMemberId(memberId); + default Session getByMemberIdAndIsLoggedInTrue(final Long memberId) { + final Optional session = findByMemberIdAndIsLoggedInTrue(memberId); if (session.isEmpty()) { new AuthException(); } return session.get(); } - Optional findByMemberId(Long memberId); + Optional findByMemberId(final Long memberId); + + Optional findByMemberIdAndIsLoggedInTrue(final Long memberId); }