feat(backend): add fastify api, auth, prisma schema and jobs
This commit is contained in:
25
apps/backend/src/plugins/guest.ts
Normal file
25
apps/backend/src/plugins/guest.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
import fp from 'fastify-plugin';
|
||||
import { nanoid } from 'nanoid';
|
||||
import { env } from '../config/env.js';
|
||||
|
||||
export const GUEST_COOKIE = 'fw_gid';
|
||||
const GUEST_COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 2; // 2 years
|
||||
|
||||
export default fp(async (app) => {
|
||||
app.addHook('onRequest', async (request, reply) => {
|
||||
const existing = request.cookies[GUEST_COOKIE];
|
||||
if (existing && existing.length >= 16 && existing.length <= 64) {
|
||||
request.guestId = existing;
|
||||
return;
|
||||
}
|
||||
const id = nanoid(24);
|
||||
request.guestId = id;
|
||||
reply.setCookie(GUEST_COOKIE, id, {
|
||||
httpOnly: true,
|
||||
secure: env.NODE_ENV === 'production',
|
||||
sameSite: 'lax',
|
||||
path: '/',
|
||||
maxAge: GUEST_COOKIE_MAX_AGE,
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user