diff --git a/rest_auth/serializers.py b/rest_auth/serializers.py index b645231..4c33491 100644 --- a/rest_auth/serializers.py +++ b/rest_auth/serializers.py @@ -1,14 +1,21 @@ from django.contrib.auth import get_user_model, authenticate from django.conf import settings from django.contrib.auth.forms import PasswordResetForm, SetPasswordForm -from django.contrib.auth.tokens import default_token_generator -from django.utils.http import urlsafe_base64_decode as uid_decoder from django.utils.translation import ugettext_lazy as _ from django.utils.encoding import force_text from rest_framework import serializers, exceptions from rest_framework.exceptions import ValidationError +try: + from allauth.account.forms import default_token_generator + from allauth.account.utils import url_str_to_user_pk + decoder = url_str_to_user_pk +except ImportError: + from django.contrib.auth.tokens import default_token_generator + from django.utils.http import urlsafe_base64_decode as uid_decoder + decoder = uid_decoder + from .models import TokenModel from .utils import import_callable @@ -205,7 +212,7 @@ class PasswordResetConfirmSerializer(serializers.Serializer): # Decode the uidb64 to uid to get User object try: - uid = force_text(uid_decoder(attrs['uid'])) + uid = force_text(decoder(attrs['uid'])) self.user = UserModel._default_manager.get(pk=uid) except (TypeError, ValueError, OverflowError, UserModel.DoesNotExist): raise ValidationError({'uid': ['Invalid value']})