From a089ab7a0474647eff1bd98c14af44e32be713e3 Mon Sep 17 00:00:00 2001
From: usbharu <64310155+usbharu@users.noreply.github.com>
Date: Thu, 1 Feb 2024 15:52:38 +0900
Subject: [PATCH] =?UTF-8?q?feat:=20=E5=8C=BF=E5=90=8D=E8=AA=8D=E8=A8=BC?=
 =?UTF-8?q?=E6=99=82=E3=81=AB=E3=83=AD=E3=82=B0=E3=82=A4=E3=83=B3=E3=83=A6?=
 =?UTF-8?q?=E3=83=BC=E3=82=B6=E3=83=BC=E3=82=92=E5=8F=96=E5=BE=97=E3=81=A7?=
 =?UTF-8?q?=E3=81=8D=E3=81=AA=E3=81=84=E5=A0=B4=E5=90=88=E3=82=A8=E3=83=A9?=
 =?UTF-8?q?=E3=83=BC=E3=81=A7=E3=81=AF=E3=81=AA=E3=81=8Fnull=E3=82=92?=
 =?UTF-8?q?=E8=BF=94=E3=81=99=E9=96=A2=E6=95=B0=E3=82=92=E8=BF=BD=E5=8A=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../springframework/security/LoginUserContextHolder.kt   | 2 ++
 .../security/OAuth2JwtLoginUserContextHolder.kt          | 9 +++++++++
 2 files changed, 11 insertions(+)

diff --git a/src/main/kotlin/dev/usbharu/hideout/core/infrastructure/springframework/security/LoginUserContextHolder.kt b/src/main/kotlin/dev/usbharu/hideout/core/infrastructure/springframework/security/LoginUserContextHolder.kt
index e86dc2b0..1090757e 100644
--- a/src/main/kotlin/dev/usbharu/hideout/core/infrastructure/springframework/security/LoginUserContextHolder.kt
+++ b/src/main/kotlin/dev/usbharu/hideout/core/infrastructure/springframework/security/LoginUserContextHolder.kt
@@ -2,4 +2,6 @@ package dev.usbharu.hideout.core.infrastructure.springframework.security
 
 interface LoginUserContextHolder {
     fun getLoginUserId(): Long
+
+    fun getLoginUserIdOrNull(): Long?
 }
diff --git a/src/main/kotlin/dev/usbharu/hideout/core/infrastructure/springframework/security/OAuth2JwtLoginUserContextHolder.kt b/src/main/kotlin/dev/usbharu/hideout/core/infrastructure/springframework/security/OAuth2JwtLoginUserContextHolder.kt
index 0369fda6..2c77a9f9 100644
--- a/src/main/kotlin/dev/usbharu/hideout/core/infrastructure/springframework/security/OAuth2JwtLoginUserContextHolder.kt
+++ b/src/main/kotlin/dev/usbharu/hideout/core/infrastructure/springframework/security/OAuth2JwtLoginUserContextHolder.kt
@@ -11,4 +11,13 @@ class OAuth2JwtLoginUserContextHolder : LoginUserContextHolder {
 
         return principal.getClaim<String>("uid").toLong()
     }
+
+    override fun getLoginUserIdOrNull(): Long? {
+        val principal = SecurityContextHolder.getContext()?.authentication?.principal
+        if (principal !is Jwt) {
+            return null
+        }
+
+        return principal.getClaim<String>("uid").toLongOrNull()
+    }
 }