Commit 3ac24084 by ayub-khan Committed by Dillon Dumesnil

Added user logs for save bearer token

Purpose of those logs is to get more information
about deadlocks coming on prod when we revoke already
existing refresh tokens.

LEARNER-717
parent 2d715622
...@@ -3,17 +3,21 @@ Classes that override default django-oauth-toolkit behavior ...@@ -3,17 +3,21 @@ Classes that override default django-oauth-toolkit behavior
""" """
from __future__ import unicode_literals from __future__ import unicode_literals
import logging
from datetime import datetime from datetime import datetime
from django.contrib.auth import authenticate, get_user_model from django.contrib.auth import authenticate, get_user_model
from django.db.models.signals import pre_save from django.db.models.signals import pre_save
from django.dispatch import receiver from django.dispatch import receiver
from pytz import utc
from oauth2_provider.models import AccessToken from oauth2_provider.models import AccessToken
from oauth2_provider.oauth2_validators import OAuth2Validator from oauth2_provider.oauth2_validators import OAuth2Validator
from pytz import utc
from .models import RestrictedApplication from .models import RestrictedApplication
log = logging.getLogger(__name__)
@receiver(pre_save, sender=AccessToken) @receiver(pre_save, sender=AccessToken)
def on_access_token_presave(sender, instance, *args, **kwargs): # pylint: disable=unused-argument def on_access_token_presave(sender, instance, *args, **kwargs): # pylint: disable=unused-argument
...@@ -73,6 +77,9 @@ class EdxOAuth2Validator(OAuth2Validator): ...@@ -73,6 +77,9 @@ class EdxOAuth2Validator(OAuth2Validator):
grant_type = request.grant_type grant_type = request.grant_type
user = request.user user = request.user
_token_prefix = token['access_token'][:3]
log.info('Saving bearer token with prefix [%s] for user [%d]', _token_prefix, user.id)
if grant_type == 'client_credentials': if grant_type == 'client_credentials':
# Temporarily remove the grant type to avoid triggering the super method's code that removes request.user. # Temporarily remove the grant type to avoid triggering the super method's code that removes request.user.
request.grant_type = None request.grant_type = None
...@@ -100,6 +107,8 @@ class EdxOAuth2Validator(OAuth2Validator): ...@@ -100,6 +107,8 @@ class EdxOAuth2Validator(OAuth2Validator):
token['expires_in'] = expires_in token['expires_in'] = expires_in
log.info('Finished bearer token with prefix [%s] for user [%d]', _token_prefix, user.id)
# Restore the original request attributes # Restore the original request attributes
request.grant_type = grant_type request.grant_type = grant_type
request.user = user request.user = user
...@@ -63,10 +63,10 @@ class ClientCredentialsTest(mixins.AccessTokenMixin, TestCase): ...@@ -63,10 +63,10 @@ class ClientCredentialsTest(mixins.AccessTokenMixin, TestCase):
'client_id': application.client_id, 'client_id': application.client_id,
'client_secret': application.client_secret, 'client_secret': application.client_secret,
'scope': ' '.join(scopes), 'scope': ' '.join(scopes),
'token_type': 'jwt' 'token_type': 'jwt',
} }
response = self.client.post(reverse('access_token'), data) response = self.client.post(reverse('access_token'), data, user=self.user)
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
content = json.loads(response.content) content = json.loads(response.content)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment