/** @typedef {import("fastify").FastifyInstance} FastifyInstance */ import fp from "fastify-plugin"; import { Redis } from "../utils/index.js"; import { db } from "../db/index.js"; import { sessions } from "../db/schemas.js"; import { eq } from "drizzle-orm"; export const middleware = fp( /** * @param {FastifyInstance} fastify * @param {unknown} _options */ async (fastify, _options) => { fastify.addHook("onRequest", async (request) => { // request.redis = Redis; // request.db = db; }); }); export const authMiddlewareFn = async (request, response) => { try { // if (!request.headers.authorization || !request.headers.authorization.startsWith("Bearer")) { if (!request.cookies.token) { response.status(401).send({ success: false, message: "Missing authentication token" }); return false; } // const token = request.headers.authorization.split(" ")[1]; const token = request.cookies.token; const session = await db.select().from(sessions).where(eq(sessions.id, token)); if (session.length == 0) { response.status(401).send({ success: false, message: "Invalid authentication token" }); return false; } // console.log(token); // console.log(session); request.session = session[0]; return true; } catch (e) { console.log(e); } } export const authMiddleware = fp( async (fastify, _options) => { fastify.addHook("preValidation", authMiddlewareFn); } )