password check

This commit is contained in:
Jonathan Baecker 2020-04-16 17:57:49 +02:00
parent 5cdd35ea82
commit 3d994ae121

View File

@ -6,38 +6,38 @@ from api.models import GuiSettings
class UserSerializer(serializers.ModelSerializer): class UserSerializer(serializers.ModelSerializer):
confirm_password = serializers.CharField(write_only=False, required=False)
new_password = serializers.CharField(write_only=True, required=False) new_password = serializers.CharField(write_only=True, required=False)
old_password = serializers.CharField(write_only=True, required=False) old_password = serializers.CharField(write_only=True, required=False)
class Meta: class Meta:
model = User model = User
fields = ['username', 'old_password', fields = ['id', 'username', 'old_password',
'new_password', 'confirm_password', 'email'] 'new_password', 'email']
def update(self, instance, validated_data): def update(self, instance, validated_data):
print(validated_data)
instance.password = validated_data.get('password', instance.password) instance.password = validated_data.get('password', instance.password)
if not validated_data['new_password']: if 'new_password' in validated_data and \
raise serializers.ValidationError({'new_password': 'not found'}) 'old_password' in validated_data:
if not validated_data['new_password']:
raise serializers.ValidationError({'new_password': 'not found'})
if not validated_data['old_password']: if not validated_data['old_password']:
raise serializers.ValidationError({'old_password': 'not found'}) raise serializers.ValidationError({'old_password': 'not found'})
if not instance.check_password(validated_data['old_password']): if not instance.check_password(validated_data['old_password']):
raise serializers.ValidationError( raise serializers.ValidationError(
{'old_password': 'wrong password'}) {'old_password': 'wrong password'})
if validated_data['new_password'] != \ if validated_data['new_password'] and \
validated_data['confirm_password']: instance.check_password(validated_data['old_password']):
raise serializers.ValidationError( # instance.password = validated_data['new_password']
{'passwords': 'passwords do not match'}) instance.set_password(validated_data['new_password'])
instance.save()
if validated_data['new_password'] == \ return instance
validated_data['confirm_password'] and \ elif 'email' in validated_data:
instance.check_password(validated_data['old_password']): instance.email = validated_data['email']
# instance.password = validated_data['new_password']
instance.set_password(validated_data['new_password'])
instance.save() instance.save()
return instance return instance
return instance return instance