Skip to content

Commit 4fc958b

Browse files
committed
Immediate remove request.user when ping fails
Since we were setting request.user even when ping fails, the site would still let you load 1 page before logging you out. This should resolve that weird issue.
1 parent 048a337 commit 4fc958b

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

oauthadmin/middleware.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ def _verify_ping_interval(request, ping_interval, ping_func):
1616
is_valid = ping_func(request.session['oauth_token'])
1717
if not is_valid:
1818
destroy_session(request)
19+
from django.contrib.auth.models import AnonymousUser
20+
request.user = AnonymousUser()
1921

2022
class OauthAdminSessionMiddleware(object):
2123
def process_request(self, request):

test/test_middleware.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,17 @@ def test_process_request_with_user():
3030
assert request.user.get('id') is data['id']
3131

3232

33+
false_mock_pinger = Mock(return_value = False)
34+
35+
@override_settings(OAUTHADMIN_PING_INTERVAL=5)
36+
@override_settings(OAUTHADMIN_PING='test.test_middleware.false_mock_pinger')
37+
def test_that_anonymoususer_goes_in_request_user_if_ping_fails():
38+
request.session = {'user':'not anonymous', 'oauth_token':'abc'}
39+
request.user = 'not anonymous'
40+
mw.process_request(request)
41+
assert isinstance(request.user, AnonymousUser)
42+
43+
3344
mock_pinger = Mock()
3445

3546
@override_settings(OAUTHADMIN_PING_INTERVAL=5)

0 commit comments

Comments
 (0)