31 lines
681 B
TypeScript
31 lines
681 B
TypeScript
import jwt from 'jsonwebtoken';
|
|
import * as dotenv from 'dotenv';
|
|
|
|
dotenv.config({ path: '.env' });
|
|
|
|
export const handle = async ({ event, resolve }) => {
|
|
const theme = event.cookies.get('theme');
|
|
const JWT = event.cookies.get('jwt');
|
|
|
|
if (process.env.JWT_SECRET === undefined) {
|
|
throw new Error('JWT_SECRET not defined');
|
|
}
|
|
|
|
if (JWT) {
|
|
try {
|
|
const decoded = jwt.verify(JWT, process.env.JWT_SECRET);
|
|
} catch (err) {
|
|
event.cookies.delete('jwt', { path: '/' });
|
|
}
|
|
}
|
|
|
|
if (!theme) {
|
|
return await resolve(event);
|
|
}
|
|
return await resolve(event, {
|
|
transformPageChunk: ({ html }) => {
|
|
return html.replace('data-theme=""', `data-theme="${theme}"`);
|
|
}
|
|
});
|
|
};
|