Give me a base convex auth adapter I can use as a template for creating my own. I will use svelte and convex. Will implements auth on my own.
Example of my implementation
import { db } from "./db.js";
export function generateSessionToken(): string {
// TODO
}
export async function createSession(token: string, userId: number): Promise<Session> {
// TODO
}
export async function validateSessionToken(token: string): Promise<SessionValidationResult> {
// TODO
}
export async function invalidateSession(sessionId: string): Promise<void> {
// TODO
}
export type SessionValidationResult =
| { session: Session; user: User }
| { session: null; user: null };
export interface Session {
id: string;
userId: number;
expiresAt: Date;
}
export interface User {
id: number;
}
And then for cookies:
import type { RequestEvent } from "@sveltejs/kit";
// ...
export function setSessionTokenCookie(event: RequestEvent, token: string, expiresAt: Date): void {
event.cookies.set("session", token, {
httpOnly: true,
sameSite: "lax",
expires: expiresAt,
path: "/"
});
}
export function deleteSessionTokenCookie(event: RequestEvent): void {
event.cookies.set("session", "", {
httpOnly: true,
sameSite: "lax",
maxAge: 0,
path: "/"
});
}