import json
from django.http import JsonResponse
from django.utils.deprecation import MiddlewareMixin
from rest_framework import status


class DemoModeMiddleware(MiddlewareMixin):
    """
    演示环境中间件
    全局禁止修改和删除操作
    """
    
    def process_request(self, request):
        # 只处理 API 请求
        if not request.path.startswith('/api/'):
            return None
            
        # 禁止的 HTTP 方法
        forbidden_methods = ['POST', 'PUT', 'PATCH', 'DELETE']
        
        if request.method in forbidden_methods:
            # 检查是否是登录接口，登录接口允许 POST
            if request.path.endswith('/login/') or request.path.endswith('/auth/login/'):
                return None
                
            # 检查是否是登出接口，登出接口允许 POST
            if request.path.endswith('/logout/') or request.path.endswith('/auth/logout/'):
                return None
                
            # 其他修改/删除操作一律禁止
            response_data = {
                'code': 403,
                'message': '演示环境禁止修改和删除操作',
                'data': None
            }
            
            return JsonResponse(
                response_data, 
                status=status.HTTP_403_FORBIDDEN,
                content_type='application/json'
            )
        
        return None 