version 0.0.7.1: fixed endpoint for authentication via facebook

This commit is contained in:
Anatoly 2019-08-14 12:04:00 +03:00
parent e830e30c90
commit f3b17bf1d0

View File

@ -81,14 +81,8 @@ class JWTViewMixin(generics.GenericAPIView):
def _handle_cookies(self, request, access_token, refresh_token): def _handle_cookies(self, request, access_token, refresh_token):
""" """
CHECK locale in cookies and PUT access and refresh tokens there. CHECK locale in cookies and PUT access and refresh tokens there.
_cookies it is list that contain tuples. cookies it is list that contain namedtuples
_cookies would contain key, value and secure parameters. cookies would contain key, value and secure parameters.
i.e.
[
(locale, 'ru-RU', True), # Key, Value, Secure flag
('access_token', 'token', True), # Key, Value, Secure flag
('refresh_token', 'token', True), # Key, Value, Secure flag
]
""" """
cookies = list() cookies = list()
COOKIE = namedtuple('COOKIE', ['key', 'value', 'secure']) COOKIE = namedtuple('COOKIE', ['key', 'value', 'secure'])
@ -126,7 +120,7 @@ class JWTViewMixin(generics.GenericAPIView):
# Serializers # Serializers
# Sign in via Facebook # Sign in via Facebook
class OAuth2SignUpView(OAuth2ViewMixin, generics.GenericAPIView): class OAuth2SignUpView(OAuth2ViewMixin, JWTViewMixin):
""" """
Implements an endpoint to convert a provider token to an access token Implements an endpoint to convert a provider token to an access token
@ -153,7 +147,7 @@ class OAuth2SignUpView(OAuth2ViewMixin, generics.GenericAPIView):
return token return token
def post(self, request, *args, **kwargs): def post(self, request, *args, **kwargs):
"""Override POST method"""
# Preparing request data # Preparing request data
serializer = self.get_serializer(data=request.data) serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True) serializer.is_valid(raise_exception=True)
@ -177,21 +171,14 @@ class OAuth2SignUpView(OAuth2ViewMixin, generics.GenericAPIView):
token = self.get_jwt_token(user=user, token = self.get_jwt_token(user=user,
access_token=body.get('access_token'), access_token=body.get('access_token'),
refresh_token=body.get('refresh_token')) refresh_token=body.get('refresh_token'))
response = Response(data={'refresh': str(token), refresh_token = str(token)
'access': str(token.access_token)}, access_token = str(token.access_token)
response = Response(data={'refresh_token': refresh_token,
'access_token': access_token},
status=status.HTTP_200_OK) status=status.HTTP_200_OK)
if 'locale' in request.COOKIES: return self._put_cookies_in_response(
# Write locale in cookie cookies=self._handle_cookies(request, access_token, refresh_token),
key, value = 'locale', request.COOKIES.get('locale') response=response)
response.set_cookie(key=key, value=value)
# Write to cookie access and refresh token with secure flag
response.set_cookie(key='access_token',
value=serializer.data.get('access_token'),
secure=True)
response.set_cookie(key='refresh_token',
value=serializer.data.get('refresh_token'),
secure=True)
return response
# JWT # JWT