fix: requireAdmin résout le user local par superOAuthId
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 59s
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 59s
This commit is contained in:
@@ -1,12 +1,13 @@
|
||||
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";
|
||||
|
||||
/**
|
||||
* Middleware requireAdmin — s'exécute APRÈS requireAuth.
|
||||
* Charge les rôles de l'utilisateur depuis la DB et vérifie
|
||||
* la présence du slug "admin" ou "super_admin".
|
||||
* Résout l'utilisateur local par superOAuthId (req.user.id est l'ID SuperOAuth),
|
||||
* charge ses rôles et vérifie la présence du slug "admin" ou "super_admin".
|
||||
* Retourne 403 FORBIDDEN si la condition n'est pas remplie.
|
||||
*/
|
||||
export const requireAdmin = async (
|
||||
@@ -15,10 +16,17 @@ export const requireAdmin = async (
|
||||
next: NextFunction
|
||||
): Promise<void> => {
|
||||
try {
|
||||
const userId = req.user.id;
|
||||
const localUser = await AppDataSource.getRepository(User).findOne({
|
||||
where: { superOAuthId: req.user.id },
|
||||
});
|
||||
|
||||
if (!localUser) {
|
||||
res.status(403).json({ success: false, error: "FORBIDDEN" });
|
||||
return;
|
||||
}
|
||||
|
||||
const userRoles = await AppDataSource.getRepository(UserRole).find({
|
||||
where: { userId },
|
||||
where: { userId: localUser.id },
|
||||
relations: ["role"],
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user