import { Request, Response, NextFunction } from "express";
import { AppError } from "../core/AppError";
import { ShopUserRole } from "@prisma/client";

type ShopRole = ShopUserRole;

export const requireRole =
    (...allowedRoles: ShopRole[]) =>
        (req: Request, _res: Response, next: NextFunction) => {

            if (!req.posRole) {
                throw new AppError("No shop role attached", 500);
            }

            if (!allowedRoles.includes(req.posRole as ShopRole)) {
                throw new AppError("Forbidden", 403);
            }

            next();
        };