from rest_framework.permissions import BasePermission
from admin_panel.permissions import has_permission


class RBACPermission(BasePermission):

    def has_permission(self, request, view):

        # Super admin bypass
        if getattr(request.user, "is_super_admin", False):
            return True

        # Get module from view
        module = getattr(view, "module_name", None)

        # ✅ Match DB actions
        method_map = {
            "GET": "view",
            "POST": "add",
            "PATCH": "edit",
            "PUT": "edit",
            "DELETE": "delete"
        }

        action = method_map.get(request.method)

        # If no module defined → allow
        if not module or not action:
            return True

        # Debug (optional)
        print("USER:", request.user.username)
        print("MODULE:", module)
        print("ACTION:", action)

        return has_permission(
            request.user,
            module,
            action
        )