def update(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) user = serializer.save() # Response data include new tokens data = get_user_profile_data(user) return Response(data, status=status.HTTP_200_OK)
def create(self, request, *args, **kwargs): serializer = self.serializer_class(data=request.data) serializer.is_valid(raise_exception=True) user = serializer.save() data = get_user_profile_data(user) domain = get_current_domain(request) # Send email activation link if has_user_activate_token() or has_user_verify_code(): send_verify_email(user, domain) else: send_email_welcome(user) return Response(data, status=status.HTTP_201_CREATED)
def post(self, request, *args, **kwargs): """ Authenticate user through the provider and access_token """ serializer = self.serializer_class(data=request.data) serializer.is_valid(raise_exception=True) provider = serializer.data.get('provider', None) # Check is invalid provider if not socials.is_valid_provider(provider): raise InvalidProvider() # Check valid token access_token = serializer.data.get('access_token', None) user_data = socials.get_user_info(provider, access_token) # None value mean the access token is not valid if not user_data: raise InvalidAccessToken() # Check the case can not get user email address if not user_data.get('email'): raise MissingEmail() # Create user if not exist User = get_user_model() try: user = User.objects.get(email=user_data['email']) except User.DoesNotExist: user = User.objects.create( username=user_data['email'], email=user_data['email'], first_name=user_data.get('first_name'), last_name=user_data.get('last_name'), ) # Always verified user if they using Google or Facebook set_user_verified(user) # Update last logged in update_last_login(None, user) data = get_user_profile_data(user) return Response(data, status=status.HTTP_200_OK)
def post(self, request, *args, **kwargs): """ Override to check user login Args: request (object): The request object """ serializer = self.serializer_class(data=request.data) serializer.is_valid(raise_exception=True) user = serializer.validated_data['user'] # Update last logged in update_last_login(None, user) data = get_user_profile_data(user) return Response(data, status=status.HTTP_200_OK)
def test_get_user_profile_data(self): data = users.get_user_profile_data(self.user) self.assertEqual(data['id'], self.user.id) self.assertEqual(data['username'], self.user.username) self.assertEqual(data['email'], self.user.email)