From ab99ba2fe5da1485bc62d606021ca5abdc32ae1f Mon Sep 17 00:00:00 2001 From: Fanrouver Date: Wed, 7 Jan 2026 07:50:25 +0700 Subject: [PATCH] patch parsing JSON error --- server/api/users/[id].patch.ts | 11 ++++------- server/api/users/current.get.ts | 18 +++++------------- server/api/users/last-access.get.ts | 11 ++++------- server/api/users/list.get.ts | 11 ++++------- server/api/users/sync-all.post.ts | 19 +++++-------------- 5 files changed, 22 insertions(+), 48 deletions(-) diff --git a/server/api/users/[id].patch.ts b/server/api/users/[id].patch.ts index 6bbf3e5..2a8906d 100644 --- a/server/api/users/[id].patch.ts +++ b/server/api/users/[id].patch.ts @@ -79,13 +79,10 @@ export default defineEventHandler(async (event) => { // Get access token from current user session let accessToken: string | null = null; try { - const sessionCookie = getCookie(event, "user_session"); - if (sessionCookie) { - const session = JSON.parse(sessionCookie); - const isExpired = Date.now() > session.expiresAt; - if (!isExpired && session.accessToken) { - accessToken = session.accessToken; - } + const { getSessionFromCookie } = await import('~/server/utils/sessionStore'); + const session = await getSessionFromCookie(event); + if (session && session.accessToken) { + accessToken = session.accessToken; } } catch (e) { console.warn("⚠️ No valid session found for password update"); diff --git a/server/api/users/current.get.ts b/server/api/users/current.get.ts index 3e3b339..5d769e4 100644 --- a/server/api/users/current.get.ts +++ b/server/api/users/current.get.ts @@ -18,26 +18,18 @@ const decodeTokenPayload = (token: string | undefined): any | null => { export default defineEventHandler(async (event) => { console.log("🔍 Current user endpoint called"); - const sessionCookie = getCookie(event, "user_session"); + // Get session from session store using session ID from cookie + const { getSessionFromCookie } = await import('~/server/utils/sessionStore'); + const session = await getSessionFromCookie(event); - if (!sessionCookie) { + if (!session) { throw createError({ statusCode: 401, - statusMessage: "No session cookie found", + statusMessage: "No session found or session expired", }); } try { - const session = JSON.parse(sessionCookie); - - const isExpired = Date.now() > session.expiresAt; - if (isExpired) { - deleteCookie(event, "user_session"); - throw createError({ - statusCode: 401, - statusMessage: "Session expired", - }); - } // Decode tokens to get full user data const idTokenPayload = decodeTokenPayload(session.idToken); diff --git a/server/api/users/last-access.get.ts b/server/api/users/last-access.get.ts index 5f33878..dcfbfa2 100644 --- a/server/api/users/last-access.get.ts +++ b/server/api/users/last-access.get.ts @@ -20,13 +20,10 @@ export default defineEventHandler(async (event) => { // Get access token from current user session let accessToken: string | null = null; try { - const sessionCookie = getCookie(event, "user_session"); - if (sessionCookie) { - const session = JSON.parse(sessionCookie); - const isExpired = Date.now() > session.expiresAt; - if (!isExpired && session.accessToken) { - accessToken = session.accessToken; - } + const { getSessionFromCookie } = await import('~/server/utils/sessionStore'); + const session = await getSessionFromCookie(event); + if (session && session.accessToken) { + accessToken = session.accessToken; } } catch (e) { console.warn("⚠️ No valid session found"); diff --git a/server/api/users/list.get.ts b/server/api/users/list.get.ts index 08d4878..0b0e735 100644 --- a/server/api/users/list.get.ts +++ b/server/api/users/list.get.ts @@ -136,13 +136,10 @@ export default defineEventHandler(async (event) => { // Try to get access token from current user session let accessToken: string | null = null; try { - const sessionCookie = getCookie(event, "user_session"); - if (sessionCookie) { - const session = JSON.parse(sessionCookie); - const isExpired = Date.now() > session.expiresAt; - if (!isExpired && session.accessToken) { - accessToken = session.accessToken; - } + const { getSessionFromCookie } = await import('~/server/utils/sessionStore'); + const session = await getSessionFromCookie(event); + if (session && session.accessToken) { + accessToken = session.accessToken; } } catch (e) { // No session available, will skip Keycloak fetch diff --git a/server/api/users/sync-all.post.ts b/server/api/users/sync-all.post.ts index 11bb470..f67cd97 100644 --- a/server/api/users/sync-all.post.ts +++ b/server/api/users/sync-all.post.ts @@ -203,28 +203,19 @@ const initDb = () => { export default defineEventHandler(async (event) => { console.log("🔄 Sync all users endpoint called"); - const sessionCookie = getCookie(event, "user_session"); + // Get session from session store + const { getSessionFromCookie } = await import('~/server/utils/sessionStore'); + const session = await getSessionFromCookie(event); - if (!sessionCookie) { + if (!session) { throw createError({ statusCode: 401, - statusMessage: "No session cookie found", + statusMessage: "No session found or session expired", }); } try { const config = useRuntimeConfig(); - const session = JSON.parse(sessionCookie); - - const isExpired = Date.now() > session.expiresAt; - if (isExpired) { - deleteCookie(event, "user_session"); - throw createError({ - statusCode: 401, - statusMessage: "Session expired", - }); - } - const accessToken = session.accessToken; if (!accessToken) { throw createError({