From 8cee305bcc52e22438927b0c5f0fc0311786d759 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=83=EC=A7=B1?= <107979804+gitchannn@users.noreply.github.com> Date: Wed, 13 Mar 2024 14:50:21 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20logout=20=EC=97=90=EB=9F=AC=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20(#146)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/sunflower/server/application/SessionService.java | 2 +- server/src/main/java/sunflower/server/entity/Session.java | 5 +++-- .../sunflower/server/repository/SessionRepository.java | 8 +++++--- 3 files changed, 9 insertions(+), 6 deletions(-) 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); }