mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Fixed #36540 -- Updated request.auser() in contrib.auth.alogin() and contrib.auth.alogout().
This commit is contained in:
		| @@ -234,8 +234,12 @@ async def alogin(request, user, backend=None): | |||||||
|     await request.session.aset(SESSION_KEY, user._meta.pk.value_to_string(user)) |     await request.session.aset(SESSION_KEY, user._meta.pk.value_to_string(user)) | ||||||
|     await request.session.aset(BACKEND_SESSION_KEY, backend) |     await request.session.aset(BACKEND_SESSION_KEY, backend) | ||||||
|     await request.session.aset(HASH_SESSION_KEY, session_auth_hash) |     await request.session.aset(HASH_SESSION_KEY, session_auth_hash) | ||||||
|     if hasattr(request, "user"): |     if hasattr(request, "auser"): | ||||||
|         request.user = user |  | ||||||
|  |         async def auser(): | ||||||
|  |             return user | ||||||
|  |  | ||||||
|  |         request.auser = auser | ||||||
|     rotate_token(request) |     rotate_token(request) | ||||||
|     await user_logged_in.asend(sender=user.__class__, request=request, user=user) |     await user_logged_in.asend(sender=user.__class__, request=request, user=user) | ||||||
|  |  | ||||||
| @@ -269,10 +273,13 @@ async def alogout(request): | |||||||
|         user = None |         user = None | ||||||
|     await user_logged_out.asend(sender=user.__class__, request=request, user=user) |     await user_logged_out.asend(sender=user.__class__, request=request, user=user) | ||||||
|     await request.session.aflush() |     await request.session.aflush() | ||||||
|     if hasattr(request, "user"): |     if hasattr(request, "auser"): | ||||||
|         from django.contrib.auth.models import AnonymousUser |         from django.contrib.auth.models import AnonymousUser | ||||||
|  |  | ||||||
|         request.user = AnonymousUser() |         async def auser(): | ||||||
|  |             return AnonymousUser() | ||||||
|  |  | ||||||
|  |         request.auser = auser | ||||||
|  |  | ||||||
|  |  | ||||||
| def get_user_model(): | def get_user_model(): | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| from django.conf import settings | from django.conf import settings | ||||||
| from django.contrib.auth import REDIRECT_FIELD_NAME | from django.contrib.auth import REDIRECT_FIELD_NAME, alogin, alogout | ||||||
| from django.contrib.auth.middleware import ( | from django.contrib.auth.middleware import ( | ||||||
|     AuthenticationMiddleware, |     AuthenticationMiddleware, | ||||||
|     LoginRequiredMiddleware, |     LoginRequiredMiddleware, | ||||||
| @@ -17,6 +17,9 @@ class TestAuthenticationMiddleware(TestCase): | |||||||
|         cls.user = User.objects.create_user( |         cls.user = User.objects.create_user( | ||||||
|             "test_user", "test@example.com", "test_password" |             "test_user", "test@example.com", "test_password" | ||||||
|         ) |         ) | ||||||
|  |         cls.user2 = User.objects.create_user( | ||||||
|  |             "test_user2", "test2@example.com", "test_password2" | ||||||
|  |         ) | ||||||
|  |  | ||||||
|     def setUp(self): |     def setUp(self): | ||||||
|         self.middleware = AuthenticationMiddleware(lambda req: HttpResponse()) |         self.middleware = AuthenticationMiddleware(lambda req: HttpResponse()) | ||||||
| @@ -57,6 +60,22 @@ class TestAuthenticationMiddleware(TestCase): | |||||||
|         auser_second = await self.request.auser() |         auser_second = await self.request.auser() | ||||||
|         self.assertIs(auser, auser_second) |         self.assertIs(auser, auser_second) | ||||||
|  |  | ||||||
|  |     async def test_auser_after_alogin(self): | ||||||
|  |         self.middleware(self.request) | ||||||
|  |         auser = await self.request.auser() | ||||||
|  |         self.assertEqual(auser, self.user) | ||||||
|  |         await alogin(self.request, self.user2) | ||||||
|  |         auser_second = await self.request.auser() | ||||||
|  |         self.assertEqual(auser_second, self.user2) | ||||||
|  |  | ||||||
|  |     async def test_auser_after_alogout(self): | ||||||
|  |         self.middleware(self.request) | ||||||
|  |         auser = await self.request.auser() | ||||||
|  |         self.assertEqual(auser, self.user) | ||||||
|  |         await alogout(self.request) | ||||||
|  |         auser_second = await self.request.auser() | ||||||
|  |         self.assertTrue(auser_second.is_anonymous) | ||||||
|  |  | ||||||
|  |  | ||||||
| @override_settings(ROOT_URLCONF="auth_tests.urls") | @override_settings(ROOT_URLCONF="auth_tests.urls") | ||||||
| @modify_settings( | @modify_settings( | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user