


from django.conf import settings
from django.shortcuts import redirect
from django.urls import resolve
from django.contrib.auth.decorators import login_required
from django.contrib.auth.views import redirect_to_login
EXEMPT_URL_NAMES = [
    '/',  
    None,# login page
    'postsignin',       # optional
    '/logout/',       # optional
     '/password_reset',
    '/password_reset_done',
    '/password_reset_confirm',
    '/password_reset_complete/'
]

class LoginRequiredMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        print(request.user.is_authenticated)
        if request.user.is_authenticated:
            return self.get_response(request)

        resolver = resolve(request.path_info)
        url_name = resolver.url_name

        # exempted URL names
        if url_name in EXEMPT_URL_NAMES:
            return self.get_response(request)

        # exempt root path login page
        if request.path_info == '/':
            return self.get_response(request)

        # redirect & keep ?next=/job-chat/57/
        return redirect_to_login(request.get_full_path(), settings.LOGIN_URL)




