11# coding: utf-8
22from __future__ import absolute_import , unicode_literals
33
4+ from rest_framework import status
45from rest_framework .permissions import IsAuthenticated
56from rest_framework .response import Response
67from rest_framework .views import APIView
@@ -67,7 +68,8 @@ def post(self, request, *args, **kwargs):
6768 serializer = self .get_serializer (data = request .data )
6869 serializer .is_valid (raise_exception = True )
6970 user = serializer .validated_data ['user' ]
70- session_token , created = SessionToken .objects .active ().first_or_create (user = user )
71+ session_token , created = SessionToken .objects .active ().\
72+ first_or_create (user = user , request_meta = request .META )
7173 session_token .update_attributes (request = request )
7274 session_token .save ()
7375 payload = create_session_payload (session_token = session_token , user = user )
@@ -84,9 +86,14 @@ class ObtainAuthorizationTokenView(BaseAPIView):
8486
8587 def post (self , request , * args , ** kwargs ):
8688 if hasattr (request .auth , 'get' ) and request .auth .get ('sid' ):
87- session_token , created = SessionToken .objects .active ().first_or_create (pk = request .auth .get ('sid' ), user = request .user )
89+ try :
90+ session_token = SessionToken .objects .active ().\
91+ get (pk = request .auth .get ('sid' ), user = request .user )
92+ except SessionToken .DoesNotExist :
93+ return Response ({'detail' : 'Invalid token.' }, status = status .HTTP_401_UNAUTHORIZED )
8894 else :
89- session_token , created = SessionToken .objects .active ().first_or_create (user = request .user )
95+ session_token , created = SessionToken .objects .active ().\
96+ first_or_create (user = request .user , request_meta = request .META )
9097
9198 session_token .update_attributes (request = request )
9299 session_token .save ()
0 commit comments