added field old_password to endpoint for change user password
This commit is contained in:
parent
1e1b09660d
commit
277c7ba2eb
|
|
@ -1,5 +1,6 @@
|
||||||
"""Common account serializers"""
|
"""Common account serializers"""
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
from django.utils.translation import gettext_lazy as _
|
||||||
from django.contrib.auth import password_validation as password_validators
|
from django.contrib.auth import password_validation as password_validators
|
||||||
from fcm_django.models import FCMDevice
|
from fcm_django.models import FCMDevice
|
||||||
from rest_framework import exceptions
|
from rest_framework import exceptions
|
||||||
|
|
@ -80,23 +81,31 @@ class ChangePasswordSerializer(serializers.ModelSerializer):
|
||||||
"""Serializer for model User."""
|
"""Serializer for model User."""
|
||||||
|
|
||||||
password = serializers.CharField(write_only=True)
|
password = serializers.CharField(write_only=True)
|
||||||
|
old_password = serializers.CharField(write_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
"""Meta class"""
|
"""Meta class"""
|
||||||
model = models.User
|
model = models.User
|
||||||
fields = ('password', )
|
fields = (
|
||||||
|
'password',
|
||||||
|
'old_password',
|
||||||
|
)
|
||||||
|
|
||||||
def validate(self, attrs):
|
def validate(self, attrs):
|
||||||
"""Override validate method"""
|
"""Override validate method"""
|
||||||
password = attrs.get('password')
|
password = attrs.get('password')
|
||||||
|
old_password = attrs.get('old_password')
|
||||||
try:
|
try:
|
||||||
|
# Check old password
|
||||||
|
if not self.instance.check_password(raw_password=old_password):
|
||||||
|
raise serializers.ValidationError(_('Old password mismatch.'))
|
||||||
# Compare new password with the old ones
|
# Compare new password with the old ones
|
||||||
if self.instance.check_password(raw_password=password):
|
if self.instance.check_password(raw_password=password):
|
||||||
raise utils_exceptions.PasswordsAreEqual()
|
raise serializers.ValidationError(_('Password is already in use'))
|
||||||
# Validate password
|
# Validate password
|
||||||
password_validators.validate_password(password=password)
|
password_validators.validate_password(password=password)
|
||||||
except serializers.ValidationError as e:
|
except serializers.ValidationError as e:
|
||||||
raise serializers.ValidationError(str(e))
|
raise serializers.ValidationError({'detail': e.detail})
|
||||||
else:
|
else:
|
||||||
return attrs
|
return attrs
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user