gault-millau/apps/utils/oauth2.py

37 lines
1.3 KiB
Python

from django.contrib.auth.models import User
from oauth2_provider.models import AccessToken
from rest_framework_social_oauth2.backends import DjangoOAuth2
class GMOAuth2(DjangoOAuth2):
def get_user_details(self, response):
if response.get(self.ID_KEY, None):
user = User.objects.get(pk=response[self.ID_KEY])
return {'username': user.username,
'email': user.email,
'fullname': user.get_full_name(),
'first_name': user.first_name,
'last_name': user.last_name
}
return {}
def user_data(self, access_token, *args, **kwargs):
try:
user_id = AccessToken.objects.get(token=access_token).user.pk
return {self.ID_KEY: user_id}
except AccessToken.DoesNotExist:
return None
def do_auth(self, access_token, *args, **kwargs):
"""Finish the auth process once the access_token was retrieved"""
data = self.user_data(access_token, *args, **kwargs)
response = kwargs.get('response') or {}
response.update(data or {})
kwargs.update({'response': response, 'backend': self})
if response.get(self.ID_KEY, None):
user = User.objects.get(pk=response[self.ID_KEY])
return user
else:
return None