initial push
This commit is contained in:
47
src/lib/auth/session.ts
Normal file
47
src/lib/auth/session.ts
Normal file
@@ -0,0 +1,47 @@
|
||||
import "server-only";
|
||||
|
||||
import { cookies } from "next/headers";
|
||||
import { NextResponse } from "next/server";
|
||||
import { getSessionSecret, SESSION_COOKIE_NAME, SESSION_TTL_SECONDS } from "@/lib/auth/constants";
|
||||
import { createSessionTokenValue, type SessionPayload, verifySessionTokenValue } from "@/lib/auth/session-token";
|
||||
|
||||
export type { SessionPayload } from "@/lib/auth/session-token";
|
||||
|
||||
export function createSessionToken(userId: string, email: string) {
|
||||
return createSessionTokenValue(userId, email, getSessionSecret(), SESSION_TTL_SECONDS);
|
||||
}
|
||||
|
||||
export function verifySessionToken(token: string | undefined): SessionPayload | null {
|
||||
return verifySessionTokenValue(token, getSessionSecret());
|
||||
}
|
||||
|
||||
export function setSessionCookie(response: NextResponse, token: string) {
|
||||
response.cookies.set({
|
||||
name: SESSION_COOKIE_NAME,
|
||||
value: token,
|
||||
httpOnly: true,
|
||||
sameSite: "lax",
|
||||
secure: process.env.NODE_ENV === "production",
|
||||
maxAge: SESSION_TTL_SECONDS,
|
||||
path: "/",
|
||||
});
|
||||
}
|
||||
|
||||
export function clearSessionCookie(response: NextResponse) {
|
||||
response.cookies.set({
|
||||
name: SESSION_COOKIE_NAME,
|
||||
value: "",
|
||||
httpOnly: true,
|
||||
sameSite: "lax",
|
||||
secure: process.env.NODE_ENV === "production",
|
||||
maxAge: 0,
|
||||
path: "/",
|
||||
});
|
||||
}
|
||||
|
||||
export async function getSessionPayload() {
|
||||
const cookieStore = await cookies();
|
||||
const token = cookieStore.get(SESSION_COOKIE_NAME)?.value;
|
||||
|
||||
return verifySessionToken(token);
|
||||
}
|
||||
Reference in New Issue
Block a user