youtuber-blog/src/modules/middleware.js

50 lines
1.4 KiB
JavaScript
Raw Normal View History

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
2024-04-26 16:40:30 +00:00
export const middleware = fp(
2024-04-17 14:08:16 +00:00
/**
* @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-26 16:40:30 +00:00
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;
2024-04-24 20:49:59 +00:00
2024-04-26 16:40:30 +00:00
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);
2024-04-21 22:41:38 +00:00
}
)