mirror of
https://github.com/wireadmin/wireadmin
synced 2025-06-26 18:28:06 +00:00
implement a basic JWT auth
This commit is contained in:
34
web/src/hooks.server.ts
Normal file
34
web/src/hooks.server.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
import type { Handle } from '@sveltejs/kit';
|
||||
import { verifyToken } from '$lib/auth';
|
||||
|
||||
export const handle: Handle = async ({ event, resolve }) => {
|
||||
if (event.url.pathname.startsWith('/custom')) {
|
||||
const resp = new Response('custom response');
|
||||
resp.headers.set('content-type', 'text/plain');
|
||||
return resp;
|
||||
}
|
||||
|
||||
const auth_exception = ['/api/health', '/login'];
|
||||
|
||||
if (!auth_exception.includes(event.url.pathname)) {
|
||||
const token = event.cookies.get('authorization');
|
||||
const redirect = new Response(null, { status: 302, headers: { location: '/login' } });
|
||||
|
||||
if (!token) {
|
||||
console.log('handle', event.url.pathname, 'no token');
|
||||
return redirect;
|
||||
}
|
||||
|
||||
const token_valid = await verifyToken(token);
|
||||
if (!token_valid) {
|
||||
console.log('handle', event.url.pathname, 'invalid token');
|
||||
return redirect;
|
||||
}
|
||||
}
|
||||
|
||||
const resp = await resolve(event);
|
||||
|
||||
console.log('handle', event.url.pathname, resp.status);
|
||||
|
||||
return resp;
|
||||
};
|
||||
Reference in New Issue
Block a user