24 lines
755 B
TypeScript
24 lines
755 B
TypeScript
|
import cookie from 'cookie';
|
||
|
import { v4 as uuid } from '@lukeed/uuid';
|
||
|
import type { Handle } from '@sveltejs/kit';
|
||
|
|
||
|
export const handle: Handle = async ({ request, resolve }) => {
|
||
|
const cookies = cookie.parse(request.headers.cookie || '');
|
||
|
request.locals.userid = cookies.userid || uuid();
|
||
|
|
||
|
// TODO https://github.com/sveltejs/kit/issues/1046
|
||
|
if (request.query.has('_method')) {
|
||
|
request.method = request.query.get('_method').toUpperCase();
|
||
|
}
|
||
|
|
||
|
const response = await resolve(request);
|
||
|
|
||
|
if (!cookies.userid) {
|
||
|
// if this is the first time the user has visited this app,
|
||
|
// set a cookie so that we recognise them when they return
|
||
|
response.headers['set-cookie'] = `userid=${request.locals.userid}; Path=/; HttpOnly`;
|
||
|
}
|
||
|
|
||
|
return response;
|
||
|
};
|