mirror of
https://github.com/fosrl/pangolin.git
synced 2025-06-23 13:48:51 +02:00
34 lines
965 B
TypeScript
34 lines
965 B
TypeScript
|
import { NextFunction, Response, Request } from "express";
|
||
|
import ErrorResponse from "@server/types/ErrorResponse";
|
||
|
import { unauthorized, verifySession } from "@server/auth";
|
||
|
import { db } from "@server/db";
|
||
|
import { users } from "@server/db/schema";
|
||
|
import { eq } from "drizzle-orm";
|
||
|
import createHttpError from "http-errors";
|
||
|
import HttpCode from "@server/types/HttpCode";
|
||
|
|
||
|
export const verifySessionMiddleware = async (
|
||
|
req: any,
|
||
|
res: Response<ErrorResponse>,
|
||
|
next: NextFunction,
|
||
|
) => {
|
||
|
const { session, user } = await verifySession(req);
|
||
|
if (!session || !user) {
|
||
|
return next(unauthorized());
|
||
|
}
|
||
|
|
||
|
const existingUser = await db
|
||
|
.select()
|
||
|
.from(users)
|
||
|
.where(eq(users.id, user.id));
|
||
|
|
||
|
if (!existingUser || !existingUser[0]) {
|
||
|
return next(
|
||
|
createHttpError(HttpCode.BAD_REQUEST, "User does not exist"),
|
||
|
);
|
||
|
}
|
||
|
|
||
|
req.user = existingUser[0];
|
||
|
req.session = session;
|
||
|
};
|