youtuber-blog/src/modules/middleware.js
2024-04-26 18:40:30 +02:00

50 lines
1.4 KiB
JavaScript

/** @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);
}
)