30 lines
720 B
TypeScript
30 lines
720 B
TypeScript
import "server-only";
|
|
|
|
import { cookies } from "next/headers";
|
|
|
|
const DEFAULT_COOKIE_NAME = "role_user_session";
|
|
|
|
export function getSessionCookieName() {
|
|
return process.env.ROLE_USER_SESSION_COOKIE || DEFAULT_COOKIE_NAME;
|
|
}
|
|
|
|
export async function getSessionToken() {
|
|
return (await cookies()).get(getSessionCookieName())?.value;
|
|
}
|
|
|
|
export async function setSessionToken(token: string) {
|
|
const cookieStore = await cookies();
|
|
|
|
cookieStore.set(getSessionCookieName(), token, {
|
|
httpOnly: true,
|
|
secure: process.env.NODE_ENV === "production",
|
|
sameSite: "lax",
|
|
path: "/",
|
|
maxAge: 60 * 60 * 8
|
|
});
|
|
}
|
|
|
|
export async function clearSessionToken() {
|
|
(await cookies()).delete(getSessionCookieName());
|
|
}
|