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