@@ -99,6 +99,7 @@ def _get_next_path(request: HttpRequest) -> Optional[str]:
9999 return None
100100
101101 next_path = validate_referral_url (request , next_path )
102+
102103 return next_path
103104
104105
@@ -572,7 +573,15 @@ def post(self, request, attribute_mapping=None, create_unknown_user=None):
572573 custom_redirect_url = self .custom_redirect (user , relay_state , session_info )
573574 if custom_redirect_url :
574575 return HttpResponseRedirect (custom_redirect_url )
576+
575577 relay_state = validate_referral_url (request , relay_state )
578+ if relay_state is None :
579+ logger .debug (
580+ "RelayState is not a valid URL, redirecting to fallback: %s" ,
581+ relay_state
582+ )
583+ return HttpResponseRedirect (get_fallback_login_redirect_url ())
584+
576585 logger .debug ("Redirecting to the RelayState: %s" , relay_state )
577586 return HttpResponseRedirect (relay_state )
578587
@@ -825,12 +834,17 @@ def finish_logout(request, response):
825834
826835 next_path = _get_next_path (request )
827836 if next_path is not None :
837+ logger .debug ("Redirecting to the RelayState: %s" , next_path )
828838 return HttpResponseRedirect (next_path )
829839 elif settings .LOGOUT_REDIRECT_URL is not None :
830840 fallback_url = resolve_url (settings .LOGOUT_REDIRECT_URL )
841+ logger .debug ("No valid RelayState found; Redirecting to "
842+ "LOGOUT_REDIRECT_URL" )
831843 return HttpResponseRedirect (fallback_url )
832844 else :
833845 current_site = get_current_site (request )
846+ logger .debug ("No valid RelayState or LOGOUT_REDIRECT_URL found, "
847+ "rendering fallback template." )
834848 return render (
835849 request ,
836850 "registration/logged_out.html" ,
0 commit comments