Harden cookie authentication

This commit is contained in:
lucast committed 2026-09-29 15:57:07 +02:00
1 parent a0a62c1c06
commit 31e6c0c5d2
5 files changed
+116 -17

No files matched your search

+7 -4
View File
@@ -2,13 +2,15 @@ import { getCookie, readBody, setCookie, setResponseStatus } from "h3"
import { User } from "../../models/user"
import { getSessionModel } from "../../models/session"
import {
assertCookieRequestOrigin,
defineAuthenticatedEventHandler,
getSessionTtl,
REFRESH_COOKIE,
SESSION_COOKIE,
} from "../../utils/auth"
import { getAuthValidationMessage } from "../../utils/auth-validation"
export default defineEventHandler(async (event) => {
export default defineAuthenticatedEventHandler(async (event) => {
const body = await readBody(event).catch(() => undefined)
const validationMessage =
body === undefined ? null : getAuthValidationMessage(body, [{ name: "refreshToken" }])
@@ -17,9 +19,10 @@ export default defineEventHandler(async (event) => {
return { message: validationMessage }
}
const refreshToken =
(typeof body?.refreshToken === "string" && body.refreshToken) ||
getCookie(event, REFRESH_COOKIE)
const bodyRefreshToken = typeof body?.refreshToken === "string" && body.refreshToken
const cookieRefreshToken = getCookie(event, REFRESH_COOKIE)
if (!bodyRefreshToken && cookieRefreshToken) assertCookieRequestOrigin(event)
const refreshToken = bodyRefreshToken || cookieRefreshToken
if (!refreshToken) {
setResponseStatus(event, 401)