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):
"""
CHECK locale in cookies and PUT access and refresh tokens there.
_cookies it is list that contain tuples.
_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 it is list that contain namedtuples
cookies would contain key, value and secure parameters.
"""
cookies = list()
COOKIE = namedtuple('COOKIE', ['key', 'value', 'secure'])
@ -126,7 +120,7 @@ class JWTViewMixin(generics.GenericAPIView):
# Serializers
# 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
@ -153,7 +147,7 @@ class OAuth2SignUpView(OAuth2ViewMixin, generics.GenericAPIView):
return token
def post(self, request, *args, **kwargs):
"""Override POST method"""
# Preparing request data
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
@ -177,21 +171,14 @@ class OAuth2SignUpView(OAuth2ViewMixin, generics.GenericAPIView):
token = self.get_jwt_token(user=user,
access_token=body.get('access_token'),
refresh_token=body.get('refresh_token'))
response = Response(data={'refresh': str(token),
'access': str(token.access_token)},
refresh_token = str(token)
access_token = str(token.access_token)
response = Response(data={'refresh_token': refresh_token,
'access_token': access_token},
status=status.HTTP_200_OK)
if 'locale' in request.COOKIES:
# Write locale in cookie
key, value = 'locale', request.COOKIES.get('locale')
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
return self._put_cookies_in_response(
cookies=self._handle_cookies(request, access_token, refresh_token),
response=response)
# JWT