from django.shortcuts import redirect
from django.urls import resolve, Resolver404

class LoginRequiredMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response
        self.protected_view_names = ['index', 'camera', 'stream_view']
        self.login_url_name = 'login'
        self.allowed_url_names = ['login', 'register', 'admin:index']

    def __call__(self, request):
        if not request.user.is_authenticated:
            try:
                resolver_match = resolve(request.path_info)
                if resolver_match.view_name in self.protected_view_names:
                    return redirect(self.login_url_name)
            except Resolver404:
                pass
        
        return self.get_response(request) 