Skip to content

Commit fbf3260

Browse files
InfantLabclaude
andcommitted
fix(api): add missing validateSessionRequest function for API v1 auth
The API v1 middleware needs this function to validate session-based authentication. This function extracts the session cookie, validates it with Lucia, and handles session refresh/cleanup. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent 7dcd858 commit fbf3260

1 file changed

Lines changed: 39 additions & 0 deletions

File tree

app/server/utils/auth.ts

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import type { H3Event } from "h3";
12
import { Lucia } from "lucia";
23
import { DrizzleSQLiteAdapter } from "@lucia-auth/adapter-drizzle";
34
import { db } from "~/server/db";
@@ -40,3 +41,41 @@ declare module "h3" {
4041
session: import("lucia").Session | null;
4142
}
4243
}
44+
45+
/**
46+
* Validates a session from an HTTP request
47+
* Returns the session and user if valid, or null if invalid/missing
48+
*/
49+
export async function validateSessionRequest(event: H3Event) {
50+
const sessionId = getCookie(event, lucia.sessionCookieName) ?? null;
51+
52+
if (!sessionId) {
53+
return { session: null, user: null };
54+
}
55+
56+
const { session, user } = await lucia.validateSession(sessionId);
57+
58+
// Refresh session cookie if needed
59+
if (session && session.fresh) {
60+
const sessionCookie = lucia.createSessionCookie(session.id);
61+
setCookie(
62+
event,
63+
sessionCookie.name,
64+
sessionCookie.value,
65+
sessionCookie.attributes,
66+
);
67+
}
68+
69+
// Clear expired session cookie
70+
if (!session) {
71+
const blankCookie = lucia.createBlankSessionCookie();
72+
setCookie(
73+
event,
74+
blankCookie.name,
75+
blankCookie.value,
76+
blankCookie.attributes,
77+
);
78+
}
79+
80+
return { session, user };
81+
}

0 commit comments

Comments
 (0)