diff --git a/src/main/java/roomescape/system/auth/web/support/CookieUtils.kt b/src/main/java/roomescape/system/auth/web/support/CookieUtils.kt new file mode 100644 index 00000000..77d33b44 --- /dev/null +++ b/src/main/java/roomescape/system/auth/web/support/CookieUtils.kt @@ -0,0 +1,27 @@ +package roomescape.system.auth.web.support + +import jakarta.servlet.http.Cookie +import jakarta.servlet.http.HttpServletRequest +import jakarta.servlet.http.HttpServletResponse +import roomescape.system.auth.web.TokenResponse + +const val ACCESS_TOKEN_COOKIE_NAME = "accessToken" + +fun Cookie.expire(): Unit { + this.value = "" + this.maxAge = 0 +} + +fun TokenResponse.toCookie(): Cookie = Cookie(ACCESS_TOKEN_COOKIE_NAME, this.accessToken) + .also { it.maxAge = 1800000 } + +fun HttpServletRequest.accessTokenCookie(): Cookie = this.cookies + ?.firstOrNull { it.name == ACCESS_TOKEN_COOKIE_NAME } + ?: Cookie(ACCESS_TOKEN_COOKIE_NAME, "") + +fun HttpServletResponse.addAccessTokenCookie(cookie: Cookie) { + cookie.isHttpOnly = true + cookie.secure = true + cookie.path = "/" + this.addCookie(cookie) +}