frontend adapted hooks.server to new refreshcookie

This commit is contained in:
Alex
2025-02-19 12:08:30 +01:00
parent f180f59546
commit 9472577d5e

View File

@@ -1,60 +1,60 @@
import { BASE_API_URI } from "$lib/utils/constants.js"; import { BASE_API_URI } from '$lib/utils/constants.js';
import { refreshCookie, userDatesFromRFC3339 } from "$lib/utils/helpers"; import { refreshCookie, userDatesFromRFC3339 } from '$lib/utils/helpers';
/** @type {import('@sveltejs/kit').Handle} */ /** @type {import('@sveltejs/kit').Handle} */
export async function handle({ event, resolve }) { export async function handle({ event, resolve }) {
console.log("Hook started", event.url.pathname); console.log('Hook started', event.url.pathname);
if (event.locals.user) { if (event.locals.user) {
// if there is already a user in session load page as normal // if there is already a user in session load page as normal
console.log("user is logged in"); console.log('user is logged in');
return await resolve(event); return await resolve(event);
} }
// get cookies from browser // get cookies from browser
const jwt = event.cookies.get("jwt"); const jwt = event.cookies.get('jwt');
if (!jwt) { if (!jwt) {
// if there is no jwt load page as normal // if there is no jwt load page as normal
return await resolve(event); return await resolve(event);
} }
const response = await fetch(`${BASE_API_URI}/backend/users/current`, { const response = await fetch(`${BASE_API_URI}/backend/users/current`, {
credentials: "include", credentials: 'include',
headers: { headers: {
Cookie: `jwt=${jwt}`, Cookie: `jwt=${jwt}`
}, }
}); });
if (!response.ok) { if (!response.ok) {
// Clear the invalid JWT cookie // Clear the invalid JWT cookie
event.cookies.delete("jwt", { path: "/" }); event.cookies.delete('jwt', { path: '/' });
return await resolve(event); return await resolve(event);
} }
const data = await response.json(); const data = await response.json();
// Check if the server sent a new token // Check if the server sent a new token
const newToken = response.headers.get("Set-Cookie"); const newToken = response.headers.get('Set-Cookie');
refreshCookie(newToken, event); refreshCookie(newToken, event.cookies);
userDatesFromRFC3339(data.user); userDatesFromRFC3339(data.user);
const [subscriptionsResponse, licenceCategoriesResponse] = await Promise.all([ const [subscriptionsResponse, licenceCategoriesResponse] = await Promise.all([
fetch(`${BASE_API_URI}/backend/membership/subscriptions`, { fetch(`${BASE_API_URI}/backend/membership/subscriptions`, {
credentials: "include", credentials: 'include',
headers: { Cookie: `jwt=${jwt}` }, headers: { Cookie: `jwt=${jwt}` }
}), }),
fetch(`${BASE_API_URI}/backend/licence/categories`, { fetch(`${BASE_API_URI}/backend/licence/categories`, {
credentials: "include", credentials: 'include',
headers: { Cookie: `jwt=${jwt}` }, headers: { Cookie: `jwt=${jwt}` }
}), })
]); ]);
const [subscriptionsData, licence_categoriesData] = await Promise.all([ const [subscriptionsData, licence_categoriesData] = await Promise.all([
subscriptionsResponse.json(), subscriptionsResponse.json(),
licenceCategoriesResponse.json(), licenceCategoriesResponse.json()
]); ]);
event.locals.user = data.user; event.locals.user = data.user;
event.locals.subscriptions = subscriptionsData.subscriptions; event.locals.subscriptions = subscriptionsData.subscriptions;
event.locals.licence_categories = licence_categoriesData.licence_categories; event.locals.licence_categories = licence_categoriesData.licence_categories;
// load page as normal // load page as normal
return await resolve(event); return await resolve(event);
} }