This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
import { SignJWT, jwtVerify } from "jose";
|
||||
|
||||
const SESSION_COOKIE_NAME = "fpt_session";
|
||||
const SESSION_DURATION = "30d";
|
||||
|
||||
function getSecretKey() {
|
||||
const secret = process.env.SESSION_SECRET;
|
||||
if (!secret) {
|
||||
throw new Error("SESSION_SECRET ist nicht gesetzt.");
|
||||
}
|
||||
return new TextEncoder().encode(secret);
|
||||
}
|
||||
|
||||
export async function createSessionToken(): Promise<string> {
|
||||
return new SignJWT({ auth: true })
|
||||
.setProtectedHeader({ alg: "HS256" })
|
||||
.setIssuedAt()
|
||||
.setExpirationTime(SESSION_DURATION)
|
||||
.sign(getSecretKey());
|
||||
}
|
||||
|
||||
export async function verifySessionToken(token: string): Promise<boolean> {
|
||||
try {
|
||||
const { payload } = await jwtVerify(token, getSecretKey());
|
||||
return payload.auth === true;
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
export { SESSION_COOKIE_NAME };
|
||||
Reference in New Issue
Block a user