mirror of
https://github.com/KevinMidboe/immich.git
synced 2025-10-29 17:40:28 +00:00
Add web interface with admin functionality (#167)
This commit is contained in:
54
web/src/hooks.ts
Normal file
54
web/src/hooks.ts
Normal file
@@ -0,0 +1,54 @@
|
||||
import type { ExternalFetch, GetSession, Handle } from '@sveltejs/kit';
|
||||
import * as cookie from 'cookie';
|
||||
import { serverEndpoint } from '$lib/constants';
|
||||
import { session } from '$app/stores';
|
||||
|
||||
|
||||
export const handle: Handle = async ({ event, resolve, }) => {
|
||||
const cookies = cookie.parse(event.request.headers.get('cookie') || '');
|
||||
|
||||
if (!cookies.session) {
|
||||
return await resolve(event)
|
||||
}
|
||||
|
||||
const { email, isAdmin, firstName, lastName, id, accessToken } = JSON.parse(cookies.session);
|
||||
|
||||
const res = await fetch(`${serverEndpoint}/auth/validateToken`, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Authorization': `Bearer ${accessToken}`
|
||||
}
|
||||
})
|
||||
|
||||
if (res.status === 201) {
|
||||
event.locals.user = {
|
||||
id,
|
||||
accessToken,
|
||||
firstName,
|
||||
lastName,
|
||||
isAdmin,
|
||||
email
|
||||
};
|
||||
}
|
||||
|
||||
const response = await resolve(event);
|
||||
|
||||
return response;
|
||||
};
|
||||
|
||||
export const getSession: GetSession = async ({ locals }) => {
|
||||
|
||||
if (!locals.user) return {}
|
||||
|
||||
return {
|
||||
user: {
|
||||
id: locals.user.id,
|
||||
accessToken: locals.user.accessToken,
|
||||
firstName: locals.user.firstName,
|
||||
lastName: locals.user.lastName,
|
||||
isAdmin: locals.user.isAdmin,
|
||||
email: locals.user.email
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user