Migrated auth to Nitro

This commit is contained in:
lucast committed 2026-09-29 00:23:30 +02:00
1 parent 27feb1ce95
commit eb4e9f0700
16 files changed
+517 -129

No files matched your search

+35
View File
@@ -0,0 +1,35 @@
import { getCookie, setCookie } from "h3"
import { User } from "../../models/user"
import { getSessionModel } from "../../models/session"
import {
findAuthenticatedSession,
getSessionTtl,
REFRESH_COOKIE,
SESSION_COOKIE,
} from "../../utils/auth"
export default defineEventHandler(async (event) => {
const activeSession = await findAuthenticatedSession(event)
if (activeSession) {
return { authenticated: true, sessionToken: activeSession.session.token }
}
const refreshToken = getCookie(event, REFRESH_COOKIE)
if (!refreshToken) return { authenticated: false }
const user = await User.findOne({ refreshToken }).select("+refreshToken +verified")
if (!user?.verified) return { authenticated: false }
const ttl = getSessionTtl(event)
const Session = getSessionModel(ttl)
const session = await Session.create({ userId: user._id })
setCookie(event, SESSION_COOKIE, session.token, {
path: "/",
httpOnly: true,
sameSite: "lax",
secure: !import.meta.dev,
maxAge: Math.floor(ttl / 1000),
})
return { authenticated: true, sessionToken: session.token }
})