from django.shortcuts import redirect from django.urls import reverse from B_main.models import Person class ForcePasswordSetMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): # 로그인한 사용자이고 비밀번호 설정이 필요한 경우 if request.user.is_authenticated: try: person = Person.objects.get(user=request.user) if person.비밀번호설정필요: # 현재 URL이 강제 비밀번호 설정 페이지가 아닌 경우에만 리다이렉트 current_path = request.path force_password_set_path = reverse('accounts:force_password_set') if current_path != force_password_set_path and not current_path.startswith('/admin/'): return redirect('accounts:force_password_set') except Person.DoesNotExist: pass response = self.get_response(request) return response