updated reset-password method
This commit is contained in:
parent
2ebfc265e3
commit
1d18d654e3
|
|
@ -1,7 +1,7 @@
|
||||||
"""Serializers for account web"""
|
"""Serializers for account web"""
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from rest_framework import serializers
|
|
||||||
from django.contrib.auth import password_validation as password_validators
|
from django.contrib.auth import password_validation as password_validators
|
||||||
|
from rest_framework import serializers
|
||||||
|
|
||||||
from account import models
|
from account import models
|
||||||
from account import tasks
|
from account import tasks
|
||||||
|
|
@ -10,20 +10,36 @@ from utils import exceptions as utils_exceptions
|
||||||
|
|
||||||
class PasswordResetSerializer(serializers.ModelSerializer):
|
class PasswordResetSerializer(serializers.ModelSerializer):
|
||||||
"""Serializer from model PasswordReset"""
|
"""Serializer from model PasswordReset"""
|
||||||
|
email = serializers.EmailField(required=False,
|
||||||
|
write_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
"""Meta class"""
|
"""Meta class"""
|
||||||
model = models.ResetPasswordToken
|
model = models.ResetPasswordToken
|
||||||
fields = ('expiry_datetime', )
|
fields = (
|
||||||
read_only_fields = [
|
'email',
|
||||||
'expiry_datetime',
|
)
|
||||||
]
|
|
||||||
|
def validate(self, attrs):
|
||||||
|
"""Override validate method"""
|
||||||
|
user = self.context.get('request').user
|
||||||
|
email = attrs.get('email')
|
||||||
|
|
||||||
|
if not user.is_anonymous:
|
||||||
|
attrs['user'] = user
|
||||||
|
else:
|
||||||
|
# Check user in DB
|
||||||
|
user_qs = models.User.objects.filter(email=email)
|
||||||
|
if user_qs.exists():
|
||||||
|
attrs['user'] = user_qs.first()
|
||||||
|
else:
|
||||||
|
raise utils_exceptions.UserNotFoundError()
|
||||||
|
return attrs
|
||||||
|
|
||||||
def create(self, validated_data, *args, **kwargs):
|
def create(self, validated_data, *args, **kwargs):
|
||||||
"""Override create method"""
|
"""Override create method"""
|
||||||
request = self.context.get('request')
|
user = validated_data.pop('user')
|
||||||
user = request.user
|
ip_address = self.context.get('request').META.get('REMOTE_ADDR')
|
||||||
ip_address = request.META.get('REMOTE_ADDR')
|
|
||||||
obj = models.ResetPasswordToken.objects.create(
|
obj = models.ResetPasswordToken.objects.create(
|
||||||
user=user,
|
user=user,
|
||||||
ip_address=ip_address,
|
ip_address=ip_address,
|
||||||
|
|
|
||||||
|
|
@ -16,16 +16,15 @@ from rest_framework import permissions
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
from rest_framework import views
|
from rest_framework import views
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from account import tasks
|
|
||||||
|
|
||||||
from account import models
|
from account import models
|
||||||
|
from account import tasks
|
||||||
from account.forms import SetPasswordForm
|
from account.forms import SetPasswordForm
|
||||||
from account.serializers import web as serializers
|
from account.serializers import web as serializers
|
||||||
from utils import exceptions as utils_exceptions
|
from utils import exceptions as utils_exceptions
|
||||||
from utils.models import gm_token_generator
|
from utils.models import gm_token_generator
|
||||||
from utils.views import (JWTCreateAPIView,
|
from utils.views import (JWTCreateAPIView,
|
||||||
JWTGenericViewMixin,
|
JWTGenericViewMixin)
|
||||||
JWTUpdateAPIView)
|
|
||||||
|
|
||||||
|
|
||||||
# Email confirmation
|
# Email confirmation
|
||||||
|
|
@ -70,6 +69,7 @@ class VerifyEmailConfirmView(JWTGenericViewMixin):
|
||||||
# Password reset
|
# Password reset
|
||||||
class PasswordResetView(JWTCreateAPIView):
|
class PasswordResetView(JWTCreateAPIView):
|
||||||
"""View for resetting user password"""
|
"""View for resetting user password"""
|
||||||
|
permission_classes = (permissions.AllowAny, )
|
||||||
serializer_class = serializers.PasswordResetSerializer
|
serializer_class = serializers.PasswordResetSerializer
|
||||||
queryset = models.ResetPasswordToken.objects.valid()
|
queryset = models.ResetPasswordToken.objects.valid()
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user