[1.11.x] Fixed #27815 -- Made LoginView pass the request kwarg to AuthenticationForm.

Backport of 41ba27fefd from master
This commit is contained in:
Zoltan Gyarmati 2017-02-07 10:17:36 +01:00 committed by Tim Graham
parent 8a60e3d3fd
commit f94e1a5de4
2 changed files with 11 additions and 5 deletions

View File

@ -107,6 +107,11 @@ class LoginView(SuccessURLAllowedHostsMixin, FormView):
def get_form_class(self):
return self.authentication_form or self.form_class
def get_form_kwargs(self):
kwargs = super(LoginView, self).get_form_kwargs()
kwargs['request'] = self.request
return kwargs
def form_valid(self, form):
"""Security check complete. Log the user in."""
auth_login(self.request, form.get_user())

View File

@ -598,13 +598,14 @@ class LoginTest(AuthViewsTestCase):
self.assertEqual(response.url, settings.LOGIN_REDIRECT_URL)
def test_login_form_contains_request(self):
# 15198
self.client.post('/custom_requestauth_login/', {
# The custom authentication form for this login requires a request to
# initialize it.
response = self.client.post('/custom_request_auth_login/', {
'username': 'testclient',
'password': 'password',
}, follow=True)
# the custom authentication form used by this login asserts
# that a request is passed to the form successfully.
})
# The login was successful.
self.assertRedirects(response, settings.LOGIN_REDIRECT_URL, fetch_redirect_response=False)
def test_login_csrf_rotate(self):
"""