from rest_framework.permissions import BasePermission, SAFE_METHODS


class IsAdmin(BasePermission):
    def has_permission(self, request, view):
        print(f"--- IsAdmin Check (hotel) ---")
        print(f"User: {request.user}")
        print(f"Authenticated: {request.user.is_authenticated}")
        if request.user.is_authenticated:
            print(f"Role: {request.user.role}")
            print(f"Is Superuser: {request.user.is_superuser}")
        else:
            print(f"Auth Header: {request.headers.get('Authorization')}")
        result = request.user.is_authenticated and (request.user.role == "ADMIN" or request.user.is_superuser)
        print(f"Result: {result}")
        print(f"-----------------------------")
        return result


class IsHotelOwner(BasePermission):
    def has_permission(self, request, view):
        return request.user.is_authenticated and request.user.role == "HOTEL_OWNER"


class IsOwnerOrAdminOrReadOnly(BasePermission):
    def has_object_permission(self, request, view, obj):
        if request.method in SAFE_METHODS:
            return True
        return obj.owner == request.user or (request.user.role == "ADMIN" or request.user.is_superuser)
