| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- import jwt from "jsonwebtoken";
- import { cookies } from "next/headers";
- import * as cookie from "cookie";
- // Funktion zum Verifizieren des Tokens basierend auf Next.js-API
- export function verifyToken() {
- const cookieStore = cookies();
- const token = cookieStore.get("authToken");
- // Logging, um zu überprüfen, ob der Token vorhanden ist
- console.log("Received token from cookie:", token);
- if (!token) {
- console.log(
- "No token found in cookies. Cookie Store contents:",
- cookieStore.getAll()
- );
- return { error: "Unauthorized" };
- }
- try {
- const decoded = jwt.verify(token.value, process.env.JWT_SECRET);
- console.log("Token successfully verified:", decoded);
- return decoded;
- } catch (err) {
- console.error("Token verification failed:", err.message);
- return { error: "Invalid token" };
- }
- }
- // Alternative Funktion, die von Server-Side Rendering genutzt werden kann
- export function verifyTokenSSR(req) {
- // Cookies direkt aus den Request-Headers parsen (nützlich für SSR)
- const cookiesParsed = cookie.parse(req.headers.cookie || "");
- const token = cookiesParsed.authToken;
- console.log("Received token from headers:", token);
- if (!token) {
- console.log("No token found in headers. Full cookies:", cookiesParsed);
- return { error: "Unauthorized" };
- }
- try {
- const decoded = jwt.verify(token, process.env.JWT_SECRET);
- console.log("Token successfully verified:", decoded);
- return decoded;
- } catch (err) {
- console.error("Token verification failed:", err.message);
- return { error: "Invalid token" };
- }
- }
- // Hilfsfunktion zum Setzen des Auth-Tokens als Cookie (z.B. bei Login)
- export function setAuthToken(res, token) {
- const serializedToken = cookie.serialize("authToken", token, {
- httpOnly: true,
- secure: process.env.NODE_ENV !== "development", // Sicherstellen, dass es nur über HTTPS geht
- maxAge: 60 * 60 * 24, // 1 Tag gültig
- sameSite: "strict",
- path: "/",
- });
- res.setHeader("Set-Cookie", serializedToken);
- console.log("Auth token set in cookie:", serializedToken);
- }
|