import { NextFunction, Request, Response } from "express"
import usersService from "../controllers/users/users.service"
import { PermissionService } from "../controllers/permission/permission.service";

export const PermissionByUser = (permission: string) => {

    console.log("dffdfddf", permission)

    return async (req: Request, res: Response, next: NextFunction): Promise<any> => {

        try {

            // we can add both in single service 

            const findPermissionById = await PermissionService.getAllPermissionByUser(req.user?.clerkId as string);

            if (!findPermissionById) {
                return res.status(403).json({ message: "Forbidden: Insufficient permissions" });
            }


            const AllPermisionOfUser = findPermissionById.permission?.split(",") ?? [];


            if (!AllPermisionOfUser?.includes(permission)) {
                return res.status(403).json({ message: "Forbidden: Insufficient permissions" });
            }

            console.log(AllPermisionOfUser, permission)

            next()

        } catch (error) {
            return res.status(500).json({ message: "internal Server Error " })
        }


    }



}