diff --git a/docs/pages/getting-started/solidstart.md b/docs/pages/getting-started/solidstart.md index 06d63ec68..264a374de 100644 --- a/docs/pages/getting-started/solidstart.md +++ b/docs/pages/getting-started/solidstart.md @@ -46,42 +46,43 @@ It's a bit verbose, but it just reads the session cookie, validates it, and sets ```ts // src/middleware.ts -import { createMiddleware, appendHeader, getCookie, getHeader } from "@solidjs/start/server"; +import { createMiddleware } from "@solidjs/start/middleware"; +import { appendResponseHeader, getCookie, getRequestHeader } from "vinxi/http"; import { Session, User, verifyRequestOrigin } from "lucia"; import { lucia } from "./lib/auth"; export default createMiddleware({ onRequest: async (event) => { - if (event.node.req.method !== "GET") { - const originHeader = getHeader(event, "Origin") ?? null; - const hostHeader = getHeader(event, "Host") ?? null; + if (event.request.method !== "GET") { + const originHeader = getRequestHeader("Origin") ?? null; + // NOTE: You may need to use `X-Forwarded-Host` instead + const hostHeader = getRequestHeader("Host") ?? null; if (!originHeader || !hostHeader || !verifyRequestOrigin(originHeader, [hostHeader])) { - event.node.res.writeHead(403).end(); + event.nativeEvent.node.res.writeHead(403).end(); return; } } - - const sessionId = getCookie(event, lucia.sessionCookieName) ?? null; + const sessionId = getCookie(lucia.sessionCookieName) ?? null; if (!sessionId) { - event.context.session = null; - event.context.user = null; + event.locals.session = null; + event.locals.user = null; return; } const { session, user } = await lucia.validateSession(sessionId); if (session && session.fresh) { - appendHeader(event, "Set-Cookie", lucia.createSessionCookie(session.id).serialize()); + appendResponseHeader("Set-Cookie", lucia.createSessionCookie(session.id).serialize()); } if (!session) { - appendHeader(event, "Set-Cookie", lucia.createBlankSessionCookie().serialize()); + appendResponseHeader("Set-Cookie", lucia.createBlankSessionCookie().serialize()); } - event.context.session = session; - event.context.user = user; + event.locals.session = session; + event.locals.user = user; } }); -declare module "vinxi/server" { - interface H3EventContext { +declare module "@solidjs/start/server" { + interface RequestEventLocals { user: User | null; session: Session | null; } diff --git a/docs/pages/guides/validate-session-cookies/solidstart.md b/docs/pages/guides/validate-session-cookies/solidstart.md index 1f1dd9484..b2ee30f18 100644 --- a/docs/pages/guides/validate-session-cookies/solidstart.md +++ b/docs/pages/guides/validate-session-cookies/solidstart.md @@ -10,42 +10,43 @@ We recommend creating a middleware to validate requests and store the current us ```ts // src/middleware.ts -import { createMiddleware, appendHeader, getCookie, getHeader } from "@solidjs/start/server"; +import { createMiddleware } from "@solidjs/start/middleware"; +import { appendResponseHeader, getCookie, getRequestHeader } from "vinxi/http"; import { Session, User, verifyRequestOrigin } from "lucia"; import { lucia } from "./lib/auth"; -export default defineEventHandler((event) => { - if (context.request.method !== "GET") { - const originHeader = getHeader(event, "Origin") ?? null; - // NOTE: You may need to use `X-Forwarded-Host` instead - const hostHeader = getHeader(event, "Host") ?? null; - if (!originHeader || !hostHeader || !verifyRequestOrigin(originHeader, [hostHeader])) { - return event.node.res.writeHead(403).end(); +export default createMiddleware({ + onRequest: async (event) => { + if (event.request.method !== "GET") { + const originHeader = getRequestHeader("Origin") ?? null; + // NOTE: You may need to use `X-Forwarded-Host` instead + const hostHeader = getRequestHeader("Host") ?? null; + if (!originHeader || !hostHeader || !verifyRequestOrigin(originHeader, [hostHeader])) { + event.nativeEvent.node.res.writeHead(403).end(); + return; + } + } + const sessionId = getCookie(lucia.sessionCookieName) ?? null; + if (!sessionId) { + event.locals.session = null; + event.locals.user = null; + return; } - } - - const sessionId = getCookie(event, lucia.sessionCookieName) ?? null; - if (!sessionId) { - event.context.user = null; - return; - } - const { session, user } = await lucia.validateSession(sessionId); - if (session && session.fresh) { - appendResponseHeader( - event, - "Set-Cookie", - lucia.createSessionCookie(session.id).serialize() - ); - } - if (!session) { - appendResponseHeader(event, "Set-Cookie", lucia.createBlankSessionCookie().serialize()); + const { session, user } = await lucia.validateSession(sessionId); + if (session && session.fresh) { + appendResponseHeader("Set-Cookie", lucia.createSessionCookie(session.id).serialize()); + } + if (!session) { + appendResponseHeader("Set-Cookie", lucia.createBlankSessionCookie().serialize()); + } + event.locals.session = session; + event.locals.user = user; } - event.context.user = user; }); -declare module "vinxi/server" { - interface H3EventContext { +declare module "@solidjs/start/server" { + interface RequestEventLocals { user: User | null; session: Session | null; } @@ -70,5 +71,5 @@ This will allow you to access the current user inside server contexts. ```ts import { getRequestEvent } from "solid-js/web"; -const user = getRequestEvent()!.context.user; +const user = getRequestEvent()!.locals.user; ``` diff --git a/packages/adapter-postgresql/CHANGELOG.md b/packages/adapter-postgresql/CHANGELOG.md index dc1e894f2..52bd0bb50 100644 --- a/packages/adapter-postgresql/CHANGELOG.md +++ b/packages/adapter-postgresql/CHANGELOG.md @@ -2,7 +2,7 @@ ## 3.1.2 -- Update peer dependencies. +- Update peer dependencies. ## 3.1.1