@@ -46,39 +46,43 @@ def login_manual(request: HttpRequest):
46
46
redirect_url = request .POST .get ("next" , "" )
47
47
48
48
if not email :
49
- return render_error_toast_message (request , "Please enter an email" )
49
+ messages .error (request , "Please enter an email" )
50
+ return redirect_to_login (email , redirect_url )
50
51
51
52
try :
52
53
validate_email (email )
53
54
except ValidationError :
54
- return render_error_toast_message (request , "Please enter a valid email" )
55
+ messages .error (request , "Please enter a valid email" )
56
+ return redirect_to_login (email , redirect_url )
55
57
56
58
if not password :
57
- return render_error_toast_message (request , "Please enter a password" )
59
+ messages .error (request , "Please enter a password" )
60
+ return redirect_to_login (email , redirect_url )
58
61
59
62
user = authenticate (request , username = email , password = password )
60
63
61
64
if not user :
62
- return render_error_toast_message (request , "Incorrect email or password" )
65
+ messages .error (request , "Incorrect email or password" )
66
+ return redirect_to_login (email , redirect_url )
63
67
64
68
if user .awaiting_email_verification and ARE_EMAILS_ENABLED : # type: ignore[attr-defined]
65
- return render_error_toast_message (request , "You must verify your email before logging in." )
69
+ messages .error (request , "You must verify your email before logging in." )
70
+ return redirect_to_login (email , redirect_url )
66
71
67
72
login (request , user )
68
73
69
- response = HttpResponse (status = 200 )
70
-
71
74
if user .require_change_password : # type: ignore[attr-defined]
72
75
messages .warning (request , "You have been requested by an administrator to change your account password." )
73
- response [ "HX-Redirect" ] = reverse ("settings:change_password" )
74
- else :
75
- try :
76
- resolve (redirect_url )
77
- response [ "HX-Redirect" ] = redirect_url
78
- except Resolver404 :
79
- response [ "HX-Redirect" ] = "/ dashboard/"
76
+ return redirect ("settings:change_password" )
77
+
78
+ try :
79
+ resolve (redirect_url )
80
+ return redirect ( redirect_url )
81
+ except Resolver404 :
82
+ return redirect ( " dashboard" )
80
83
81
- return response
84
+ def redirect_to_login (email : str , redirect_url : str ):
85
+ return redirect (f"{ reverse ('auth:login' )} ?email={ email } &next={ redirect_url } " )
82
86
83
87
84
88
def render_error_toast_message (request : HttpRequest , message : str ) -> HttpResponse :
0 commit comments