diff --git a/src/api/apiService.ts b/src/api/apiService.ts index 834ea7e..eb280e5 100644 --- a/src/api/apiService.ts +++ b/src/api/apiService.ts @@ -1,14 +1,13 @@ import { authStore } from '$stores/authStore'; import { redirect } from '@sveltejs/kit'; -import { get } from 'svelte/store'; +import type { RequestEvent } from '../routes/$types'; const BASE_URL = import.meta.env.VITE_API_BASE_URL || 'https://acc-api.jurmanovic.com/v1'; -async function fetchAPI(endpoint: string, method: string = 'GET', body?: object) { - const { token } = get(authStore); +async function fetchAPI(endpoint: string, method: string = 'GET', body?: object, hdr?: object) { const headers = { 'Content-Type': 'application/json', - Authorization: `Basic ${token}` + ...(hdr ?? {}) }; const response = await fetch(`${BASE_URL}${endpoint}`, { @@ -34,4 +33,15 @@ async function fetchAPI(endpoint: string, method: string = 'GET', body?: object) return response.text(); } +export async function fetchAPIEvent( + event: object, + endpoint: string, + method: string = 'GET', + body?: object +) { + const token = event.cookies.get('token'); + + return fetchAPI(endpoint, method, body, { Authorization: `Basic ${token}` }); +} + export default fetchAPI; diff --git a/src/api/authService.ts b/src/api/authService.ts index 8b3c808..ea5e6ab 100644 --- a/src/api/authService.ts +++ b/src/api/authService.ts @@ -1,10 +1,11 @@ -import fetchAPI from '$api/apiService'; +import fetchAPI, { fetchAPIEvent } from '$api/apiService'; import { authStore } from '$stores/authStore'; +import type { RequestEvent } from '../routes/$types'; -export const login = async (username: string, password: string) => { +export const login = async (event: object, username: string, password: string) => { const token = btoa(`${username}:${password}`); - authStore.set({ token }); - if (!(await checkAuth())) { + event.cookies.set('token', token, { path: '/' }); + if (!(await checkAuth(event))) { { authStore.set({ token: undefined, error: 'Invalid username or password.' }); return false; @@ -13,13 +14,13 @@ export const login = async (username: string, password: string) => { return true; }; -export const logout = () => { - authStore.set({ token: undefined }); +export const logout = (event) => { + event.cookies.delete('token', { path: '/' }); }; -export const checkAuth = async () => { +export const checkAuth = async (event: object) => { try { - await fetchAPI('/api'); + await fetchAPIEvent(event, '/api'); return true; } catch (err) { return false; diff --git a/src/api/lookupService.ts b/src/api/lookupService.ts index 8f563a5..dcc0e6e 100644 --- a/src/api/lookupService.ts +++ b/src/api/lookupService.ts @@ -1,21 +1,21 @@ -import fetchAPI from "$api/apiService"; +import { fetchAPIEvent } from '$api/apiService'; -export const getCarModels = async () => { - return fetchAPI("/lookup/car-models"); +export const getCarModels = async (event: object) => { + return fetchAPIEvent(event, '/lookup/car-models'); }; -export const getCupCategories = async () => { - return fetchAPI("/lookup/cup-categories"); +export const getCupCategories = async (event: object) => { + return fetchAPIEvent(event, '/lookup/cup-categories'); }; -export const getDriverCategories = async () => { - return fetchAPI("/lookup/driver-categories"); +export const getDriverCategories = async (event: object) => { + return fetchAPIEvent(event, '/lookup/driver-categories'); }; -export const getSessionTypes = async () => { - return fetchAPI("/lookup/session-types"); +export const getSessionTypes = async (event: object) => { + return fetchAPIEvent(event, '/lookup/session-types'); }; -export const getTracks = async () => { - return fetchAPI("/lookup/tracks"); +export const getTracks = async (event: object) => { + return fetchAPIEvent(event, '/lookup/tracks'); }; diff --git a/src/api/serverService.ts b/src/api/serverService.ts index 22ddd8a..14d3c2b 100644 --- a/src/api/serverService.ts +++ b/src/api/serverService.ts @@ -1,43 +1,45 @@ -import fetchAPI from '$api/apiService'; +import { fetchAPIEvent } from '$api/apiService'; -export const getServers = async () => { - return fetchAPI('/server'); +export const getServers = async (event: object) => { + return fetchAPIEvent(event, '/server'); }; -export const getConfigFiles = async (serverId = '') => { - return fetchAPI(`/server/${serverId}/config`); +export const getConfigFiles = async (event: object, serverId = '') => { + return fetchAPIEvent(event, `/server/${serverId}/config`); }; -export const getConfigFile = async (serverId = '', file = '') => { - return fetchAPI(`/server/${serverId}/config/${file}`); +export const getConfigFile = async (event: object, serverId = '', file = '') => { + return fetchAPIEvent(event, `/server/${serverId}/config/${file}`); }; export const updateConfig = async ( + event: object, serverId: string, file: string, newConfig?: object, override = false, restart = true ) => { - return fetchAPI( + return fetchAPIEvent( + event, `/server/${serverId}/config/${file}?override=${override}&restart=${restart}`, 'PUT', newConfig ); }; -export const restartService = async (serverId: number) => { - return fetchAPI('/api/restart', 'POST', { serverId }); +export const restartService = async (event: object, serverId: number) => { + return fetchAPIEvent(event, '/api/restart', 'POST', { serverId }); }; -export const startService = async (serverId: number) => { - return fetchAPI('/api/start', 'POST', { serverId }); +export const startService = async (event: object, serverId: number) => { + return fetchAPIEvent(event, '/api/start', 'POST', { serverId }); }; -export const stopService = async (serverId: number) => { - return fetchAPI('/api/stop', 'POST', { serverId }); +export const stopService = async (event: object, serverId: number) => { + return fetchAPIEvent(event, '/api/stop', 'POST', { serverId }); }; -export const getServiceStatus = async (serviceName: number) => { - return fetchAPI(`/api/${serviceName}`); +export const getServiceStatus = async (event: object, serviceName: number) => { + return fetchAPIEvent(event, `/api/${serviceName}`); }; diff --git a/src/components/Sidebar.svelte b/src/components/Sidebar.svelte index 8f0efbf..36ef4e6 100644 --- a/src/components/Sidebar.svelte +++ b/src/components/Sidebar.svelte @@ -1,11 +1,5 @@