1
0
Fork 0
mirror of https://github.com/seanmorley15/AdventureLog.git synced 2025-07-27 08:49:36 +02:00
AdventureLog/frontend/src/routes/+page.server.ts

54 lines
1.4 KiB
TypeScript
Raw Normal View History

2024-07-08 11:44:39 -04:00
const PUBLIC_SERVER_URL = process.env['PUBLIC_SERVER_URL'];
import { redirect, type Actions } from '@sveltejs/kit';
2024-11-26 17:39:10 -05:00
import { themes } from '$lib';
import { fetchCSRFToken } from '$lib/index.server';
2024-07-08 11:44:39 -04:00
const serverEndpoint = PUBLIC_SERVER_URL || 'http://localhost:8000';
export const actions: Actions = {
setTheme: async ({ url, cookies }) => {
const theme = url.searchParams.get('theme');
// change the theme only if it is one of the allowed themes
2024-11-26 17:39:10 -05:00
if (theme && themes.find((t) => t.name === theme)) {
2024-07-08 11:44:39 -04:00
cookies.set('colortheme', theme, {
path: '/',
maxAge: 60 * 60 * 24 * 365, // 1 year
sameSite: 'lax'
2024-07-08 11:44:39 -04:00
});
}
},
logout: async (event) => {
let sessionId = event.cookies.get('sessionid');
let csrfToken = await fetchCSRFToken();
2024-07-08 11:44:39 -04:00
if (!sessionId) {
2024-07-08 11:44:39 -04:00
return;
}
const res = await fetch(`${serverEndpoint}/_allauth/browser/v1/auth/session`, {
method: 'DELETE',
2024-07-08 11:44:39 -04:00
headers: {
'Content-Type': 'application/json',
Cookie: `sessionid=${sessionId}; csrftoken=${csrfToken}`,
'X-CSRFToken': csrfToken
},
credentials: 'include'
2024-07-08 11:44:39 -04:00
});
if (res.status == 401) {
2024-07-08 11:44:39 -04:00
return redirect(302, '/login');
} else {
return redirect(302, '/');
}
2024-10-28 13:56:57 -04:00
},
setLocale: async ({ url, cookies }) => {
const locale = url.searchParams.get('locale');
// change the locale only if it is one of the allowed locales
if (locale) {
2024-10-28 13:56:57 -04:00
cookies.set('locale', locale, {
path: '/',
maxAge: 60 * 60 * 24 * 365 // 1 year
2024-10-28 13:56:57 -04:00
});
}
2024-07-08 11:44:39 -04:00
}
};