From 2f9c7d4f53b1b72018438ad422e5b343270f11d5 Mon Sep 17 00:00:00 2001 From: Raffi Date: Wed, 1 Apr 2026 18:56:13 +0200 Subject: [PATCH] =?UTF-8?q?mise=20en=20place=20de=20la=20v=C3=A9rification?= =?UTF-8?q?=20du=20tioken=20d\'authntification?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/errors/AppError.ts | 3 +++ src/middleware/verifyAuth.ts | 16 ++++++++++++++++ src/types/fastify.d.ts | 7 +++++++ 3 files changed, 26 insertions(+) create mode 100644 src/middleware/verifyAuth.ts diff --git a/src/errors/AppError.ts b/src/errors/AppError.ts index a5aec50..f45c974 100644 --- a/src/errors/AppError.ts +++ b/src/errors/AppError.ts @@ -22,4 +22,7 @@ export const Errors = { INVALID_TOKEN: new AppError('INVALID_TOKEN', 400, 'Invalid or already used token'), TOKEN_EXPIRED: new AppError('TOKEN_EXPIRED', 400, 'Token has expired'), ALREADY_CONFIRMED: new AppError('ALREADY_CONFIRMED', 400, 'User is already confirmed'), + + //Auth errors + UNAUTHORIZED: new AppError('UNAUTHORIZED', 401, 'Non authentifié'), } \ No newline at end of file diff --git a/src/middleware/verifyAuth.ts b/src/middleware/verifyAuth.ts new file mode 100644 index 0000000..df2a836 --- /dev/null +++ b/src/middleware/verifyAuth.ts @@ -0,0 +1,16 @@ +import { FastifyRequest, FastifyReply } from 'fastify' +import { verifyAuthToken } from '../services/authToken.service.js' +import { Errors } from '../errors/AppError.js' + +export async function verifyAuth(request: FastifyRequest, reply: FastifyReply) { + const token = request.cookies['authToken'] + + if (!token) throw Errors.UNAUTHORIZED + + try { + const payload = await verifyAuthToken(request.server, request.server.prisma, token) + request.user = payload + } catch { + throw Errors.UNAUTHORIZED + } +} \ No newline at end of file diff --git a/src/types/fastify.d.ts b/src/types/fastify.d.ts index ad0a8a2..6e92df4 100644 --- a/src/types/fastify.d.ts +++ b/src/types/fastify.d.ts @@ -4,4 +4,11 @@ declare module 'fastify' { interface FastifyInstance { prisma: PrismaClient } + + interface FastifyRequest { + user: { + userId: string + tokenVersion: number + } + } } \ No newline at end of file