kolypto / py-password-strength

Password strength and validation
https://pypi.python.org/pypi/password_strength
BSD 2-Clause "Simplified" License
74 stars 15 forks source link

str dunders has been added for ATest objects. #4

Open ofmendi opened 4 years ago

ofmendi commented 4 years ago

Hi, I have added str dunders that could be useful for Python web developers.


# policy.py

from password_strength import PasswordPolicy

password_policy = PasswordPolicy.from_names(
    length=8
)

# serializers.py

from .models import User
from .policy import password_policy
from rest_framework import serializers
from django.contrib.auth.hashers import make_password

class UserSerializer(serializers.ModelSerializer):
    def validate(self, data):
        errs = password_policy.test(data["password"])
        if errs:
            raise serializers.ValidationError(
                {"password": [str(err) for err in errs]})
        return data

    class Meta:
        model = User
        fields = "__all__"

    def create(self, validated_data):
        validated_data["is_active"] = True
        validated_data["password"] = make_password(validated_data["password"])
        return super(UserSerializer, self).create(validated_data)

An example response is from API.

{
    "password": [
        "Your password must be a minimum of 8 characters."
    ]
}