From e52aa1e79c77a8447fd350f5b084519e4206ad8a Mon Sep 17 00:00:00 2001 From: Tetardtek Date: Sun, 15 Mar 2026 18:00:48 +0100 Subject: [PATCH] =?UTF-8?q?perf:=20requireAdmin=20=E2=80=94=202=20queries?= =?UTF-8?q?=20=E2=86=92=201=20(User=20+=20userRoles=20eager=20join=20TypeO?= =?UTF-8?q?RM)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/middleware/admin.middleware.ts | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/backend/src/middleware/admin.middleware.ts b/backend/src/middleware/admin.middleware.ts index dd30439..0714383 100644 --- a/backend/src/middleware/admin.middleware.ts +++ b/backend/src/middleware/admin.middleware.ts @@ -1,7 +1,6 @@ import { Response, NextFunction } from "express"; import { AppDataSource } from "../config/data-source"; import { User } from "../entities/User"; -import { UserRole } from "../entities/UserRole"; import { AuthenticatedRequest } from "./auth.middleware"; import logger from "../utils/logger"; @@ -19,6 +18,7 @@ export const requireAdmin = async ( try { const localUser = await AppDataSource.getRepository(User).findOne({ where: { superOAuthId: req.user.id }, + relations: { userRoles: { role: true } }, }); if (!localUser) { @@ -26,12 +26,7 @@ export const requireAdmin = async ( return; } - const userRoles = await AppDataSource.getRepository(UserRole).find({ - where: { userId: localUser.id }, - relations: ["role"], - }); - - const slugs = userRoles.map((ur) => ur.role.slug); + const slugs = localUser.userRoles.map((ur) => ur.role.slug); const isAdmin = slugs.includes("admin") || slugs.includes("super_admin"); if (!isAdmin) {