Exemplo n.º 1
0
class UserCreateSerializer(ModelSerializer):
    email = EmailField(label="Email Address")
    email2 = EmailField(label="Confirm email")

    class Meta:
        model = User
        fields = [
            'username',
            'email',
            'email2',
            'password',
        ]

        #Setting the password to write only
        extra_kwargs = {"password": {"write_only": True}}

    #checking if email exists, General validation
    def validate(self, data):
        # email = data['email']
        # user_qs = User.objects.filter(email = email)
        # if user_qs.exists():
        #     raise ValidationError("This user has already registered")
        return data

    #validating email1
    def validate_email(self, value):
        data = self.get_initial()
        email1 = data.get("email2")
        email2 = value
        if email1 != email2:
            raise ValidationError("Emails must match.")
        # Checking if email exists
        user_qs = User.objects.filter(email=email2)
        if user_qs.exists():
            raise ValidationError("This user has already registered")

        return value

    def validate_email2(self, value):
        data = self.get_initial()
        email1 = data.get("email")
        email2 = value
        if email1 != email2:
            raise ValidationError("Emails must match.")
        return value

    #overwrite the create() method
    def create(self, validated_data):
        print validated_data  #a dictionary

        username = validated_data['username']
        email = validated_data['email']
        password = validated_data['password']

        #create an isntance of the object and save it
        user_obj = User(username=username, email=email)

        user_obj.set_password(password)
        user_obj.save()
        return validated_data
Exemplo n.º 2
0
class UserCreateSerializer(ModelSerializer):
    email = EmailField(label="Email")
    email2 = EmailField(label="Re-type Email")
    #password2 = CharField(label="Re-type Password", style={'input_type': 'password'})
    class Meta:
        model = User
        fields = [
            'username',
            'email',
            'email2',
            'password',
            #'password2',
        ]
        extra_kwargs = {
            "password":
                {"write_only":True},
            # "password2":
            #     {"write_only": True}
        }

    # def validate_email(self, value):
    #     data = self.get_initial()
    #     email = data.get("email")
    #     user_em = User.objects.filter(email=email)
    #     if user_em.exists():
    #         raise ValidationError("This Email already exists.")
    #     return value

    def validate_username(self, value):
        data = self.get_initial()
        username = data.get("username")
        user_un = User.objects.filter(username=username)
        if user_un.exists():
            raise ValidationError("This Username already exists.")
        return value

    def validate_email2(self, value):
        data = self.get_initial()
        email1 = data.get("email")
        email2 = value
        if email1 != email2:
            raise ValidationError("Emails must match!")
        return value
    #
    # def validate_password2(self, value):
    #     data = self.get_initial()
    #     password = data.get("password")
    #     password2 = value
    #     if password != password2:
    #         raise ValidationError("Passwords must match!")

    def create(self, validated_data):
        # print(validated_data)
        username = validated_data["username"]
        email = validated_data["email"]
        password = validated_data["password"]
        user_obj = User(username=username, email=email)
        user_obj.set_password(password)
        user_obj.save()
        return validated_data
Exemplo n.º 3
0
class UserCreateSerializer(ModelSerializer):
    email = EmailField(label='Email Address')
    confirm_email = EmailField(label='Confirm Email')

    class Meta:
        model = User
        fields = [
            'username',
            'email',
            'confirm_email',
            'password',
        ]
        extra_kwargs = {"password": {"write_only": True}}

    def validate_email(self, value):
        data = self.get_initial()
        email = data.get('confirm_email')
        email_2 = value
        if email != email_2:
            raise ValidationError("Email must match")
        user_query = User.objects.filter(email=email)
        print(user_query)
        if user_query:
            raise ValidationError("This user has already registered")
        return value

    def create(self, validated_data):
        username = validated_data['username']
        email = validated_data['email']
        password = validated_data['password']
        user_obj = User(username=username, email=email)
        user_obj.set_password(password)
        user_obj.save()
        return validated_data
Exemplo n.º 4
0
class CadastroUsuarioSerializer(ModelSerializer):
    email = EmailField(label='email')
    email_confirma = EmailField(label='confirme email')

    class Meta:
        model = User
        fields = [
            'first_name', 'last_name', 'username', 'email', 'email_confirma',
            'password'
        ]

    def create(self, validated_data):
        username = validated_data['username']
        email = validated_data['email']
        senha = validated_data['password']
        email_confirma = validated_data['email_confirma']

        if User.objects.filter(username=username).exists():
            raise ValidationError("Informar outro username")

        if User.objects.filter(email=email).exists():
            raise ValidationError("Email já associado a um usuário cadastrado")

        if email != email_confirma:
            raise ValidationError("Os emails digitados são diferentes")
        usuario_novo = User(username=username, email=email)
        usuario_novo.set_password(senha)
        usuario_novo.first_name = validated_data['first_name']
        usuario_novo.last_name = validated_data['last_name']
        usuario_novo.save()
        return validated_data
Exemplo n.º 5
0
class UserCreateSerializer(ModelSerializer):
    email = EmailField(label='Email')
    email2 = EmailField(label='Confirm Email')

    class Meta:
        model = User
        fields = ['username', 'email', 'email2', 'password']
        extra_kwargs = {'password': {'write_only': True}}

    def validate(self, data):
        email = data['email']
        user = User.objects.filter(email=email)
        if user.exists():
            raise ValidationError('User with this email already exists.')
        return data

    def validate_email2(self, value):
        data = self.get_initial()
        email1 = data.get('email')
        email2 = value
        if email1 != email2:
            raise ValidationError('Emails must match.')
        return value

    def create(self, validated_data):
        username = validated_data['username']
        password = validated_data['password']
        email = validated_data['email']
        user_obj = User(username=username, email=email)
        user_obj.set_password(password)
        user_obj.save()
        return validated_data
Exemplo n.º 6
0
class UserCreateSerializer(ModelSerializer):
    email = EmailField(label='Email Address')
    email2 = EmailField(label='Confirm Email')

    class Meta:
        model = User
        fields = [
            'username',
            'email',
            'email2',
            'password',
        ]

        extra_kwargs = {
            "password": {
                "write_only": True
            }
        }  #means when password is not seen in json format

    # def validate(self, data):

    #     return data

    #there are two email so i need to validate that

    #for email first
    def validate_email(self, value):
        # value = actual value passed to email
        data = self.get_initial()  #give the initial data that have been passed
        email1 = data.get("email2")
        email2 = value
        if email1 != email2:
            raise ValidationError("Emails must match.")

        user_qs = User.objects.filter(email=email2)
        if user_qs.exists():
            raise ValidationError("This user has already registered.")
        return value

    #for email2
    def validate_email2(self, value):
        data = self.get_initial(
        )  #to show validatoin error in email confirm i need email
        email1 = data.get("email")
        email2 = value
        if email1 != email2:
            raise ValidationError("Emails must match.")
        return value

    #overriding create builtin method
    def create(
        self, validated_data
    ):  #this logic is also akin to the normal register but we are using validate_data
        username = validated_data['username']
        email = validated_data['email']
        password = validated_data['password']
        user_obj = User(username=username, email=email)
        user_obj.set_password(password)
        user_obj.save()
        return validated_data
Exemplo n.º 7
0
class UserCreateSerializer(ModelSerializer):
    email = EmailField(label='Email Address')
    email2 = EmailField(label='Confirm Email')  # serializers.EmailField()

    class Meta:
        model = User
        fields = [
            'username',
            'email',
            'email2',
            'password',
        ]
        # not show password on api page
        extra_kwargs = {"password": {"write_only": True}}

    # validate Email
    def validate(self, data):
        email = data['email']
        user_qs = User.objects.filter(email=email)
        if user_qs:
            raise ValidationError("This user has already registered.")

        return data

    def validate_email(self, value):
        data = self.get_initial()
        email = value
        email2 = data.get("email2")

        user_qs = User.objects.filter(email=email)
        if user_qs:
            raise ValidationError("This user has already registered.")

        if email != email2:
            raise ValidationError("Emails must match")

        return value

    def validate_email2(self, value):
        data = self.get_initial()
        email = data.get("email")
        email2 = value

        if email != email2:
            raise ValidationError("Emails must match")
        return value

    def create(self, validated_data):
        username = validated_data['username']
        email = validated_data['email']
        password = validated_data['password']
        user_obj = User(
            username=username,
            email=email,
        )
        user_obj.set_password(password)
        user_obj.save()

        return validated_data
Exemplo n.º 8
0
class UserCreateSerializer(ModelSerializer):
    email = EmailField(label='Email Address')
    email2 = EmailField(label='Confirm Email')

    class Meta:
        model = User
        fields = [
            'username',
            'email',
            'email2',
            'password',
        ]

        extra_kwargs = {'password': {'write_only': True}}

    def validate(self, data):
        #email = data['email']
        #user_qs = User.objects.filter(email=email)

        #if user_qs.exists():
        #	raise ValidationError("This user has already registered.")
        return data

    def validate_email(self, value):
        data = self.get_initial()
        email1 = data.get("email2")
        email2 = value

        if email1 != email2:
            raise ValidationError("Emails must match.")

        user_qs = User.objects.filter(email=email2)
        if user_qs.exists():
            raise ValidationError("This user has already registered.")

        return value

    def validate_email2(self, value):
        data = self.get_initial()
        email1 = data.get("email")
        email2 = value

        if email1 != email2:
            raise ValidationError("Emails must match.")
        return value

    def create(self, validated_data):
        username = validated_data['username']
        email = validated_data['email']
        password = validated_data['password']
        user_obj = User(
            username=username,
            email=email,
        )

        user_obj.set_password(password)
        user_obj.save()

        return validated_data
Exemplo n.º 9
0
class UserCreateSerializer(ModelSerializer):
    token = CharField(allow_blank=True, read_only=True)
    email = EmailField(label='Email Address', write_only=True)
    email2 = EmailField(label='Confirm Email', write_only=True)

    class Meta:
        model = User
        fields = [
            'username',
            'token',
            'email',
            'email2',
            'password',
        ]
        extra_kwargs = {"password": {"write_only": True}}

    def validate(self, data):
        # email = data['email']
        # user_qs = User.objects.filter(email=email)
        # if user_qs.exists():
        #     raise ValidationError("This user has already registered.")
        return data

    def validate_email(self, value):
        data = self.get_initial()
        email1 = data.get("email2")
        email2 = value
        if email1 != email2:
            raise ValidationError("Emails must match.")

        user_qs = User.objects.filter(email=email2)
        if user_qs.exists():
            raise ValidationError("This user has already registered.")

        return value

    def validate_email2(self, value):
        data = self.get_initial()
        email1 = data.get("email")
        email2 = value
        if email1 != email2:
            raise ValidationError("Emails must match.")
        return value

    def create(self, validated_data):
        username = validated_data['username']
        email = validated_data['email']
        password = validated_data['password']
        user_obj = User(username=username, email=email)
        user_obj.set_password(password)
        # user_obj.active = False
        # send activation email
        user_obj.save()
        payload = jwt_payload_handler(user_obj)
        token = jwt_encode_handler(payload)
        validated_data['token'] = token
        return validated_data
Exemplo n.º 10
0
class UserCreateUpdateDestroySerializer(ModelSerializer):
    email = EmailField(label='Email')
    email2 = EmailField(label='Confirm Email')

    class Meta:
        model = User
        fields = [
            'username',
            'first_name',
            'last_name',
            'email',
            'email2',
            'password',
        ]

        extra_kwargs = {"password": {"write_only": True}}

    def validate_email(self, value):
        data = self.get_initial()
        email1 = data.get('email2')
        email2 = value
        if email1 != email2:
            raise ValidationError('Emails must match')

        user_qs = User.objects.filter(email=email2)
        if user_qs.exists():
            raise ValidationError('This user has already registered')

        return value

    def validate_email2(self, value):
        data = self.get_initial()
        email1 = data.get('email')
        email2 = value
        if email1 != email2:
            raise ValidationError('Emails must match')
        return value

    def create(self, validated_data):
        username = validated_data['username']
        first_name = validated_data['first_name']
        last_name = validated_data['last_name']
        email = validated_data['email']
        password = validated_data['password']
        user_obj = User(username=username,
                        email=email,
                        first_name=first_name,
                        last_name=last_name,
                        is_staff=True)
        group = Group.objects.get(name='authors')
        user_obj.save()
        user_obj.groups.add(group)
        user_obj.set_password(password)
        user_obj.save()

        return validated_data
Exemplo n.º 11
0
class UserCreateSerializer(ModelSerializer):
	email = EmailField(label='Email Address')
	email2 = EmailField(label='Confirm Email Address')
	class Meta:
		model = User
		fields = ('pk', 'username', 'password', 'email', 'email2', 'first_name', 'last_name')
		extra_kwargs = {"password":
                            {"write_only": True},
                        "pk":
                        	{"read_only": True},
                        }

	def validate(self,data):
		print('validated data is', data)
		return data

	def validate_email(self,value):
		data = self.get_initial() # intial gives the initial data that been passed
		email1 = data.get("email2")
		email2 = value
		if email1 != email2:
			raise ValidationError('Emails must match')
		user_qs = User.objects.filter(email=email2)
		if user_qs.exists():
			raise ValidationError('This user has already registered')
		return value

	def validate_email2(self,value):
		data = self.get_initial()
		print('get initial', data)
		email1 = data.get('email')
		email2 = value
		if email1 != email2:
			raise ValidationError('emails must match')
		return value
	"""
	create and return a new 'user' instance, given the validated data
	"""
	def create(self, validated_data):
		print('validated_data',validated_data)
		username = validated_data['username']
		first_name = validated_data['first_name']
		last_name = validated_data['last_name']
		email = validated_data['email']
		email2 = validated_data['email2']
		password = validated_data['password']
		user_obj = User.objects.create(
				username=username,
				email=email,
				first_name=first_name,
				last_name=last_name
			)
		user_obj.set_password(password)
		user_obj.save()
		return validated_data
Exemplo n.º 12
0
class UserCreateSerializer(ModelSerializer):
    email = EmailField(label='Email Address')
    email2 = EmailField(label='Confirm Email')

    class Meta:
        model = User
        fields = (
            'username',
            'email',
            'email2',
            'password',

        )
        extra_kwargs = {'password':
                            {'write_only': True}
                        }

    # def validate(self, data):
    #
    #     email = data['email']
    #     user = User.object.filter(email=email)
    #     if user.exists():
    #         raise ValidationError("user already exists")
    #     return data

    def validate_email(self, value):
        data = self.initial_data
        email2 = data['email2']
        email = value
        user = User.objects.filter(email=email)
        if user.exists():
            raise ValidationError("user already exists")
        if email != email2:
            raise ValidationError("Email must match")
        return value

    def validate_email2(self, value):
        data = self.initial_data
        email = data['email']
        email2 = value
        if email != email2:
            raise ValidationError("Email must match")
        return value

    def create(self, validated_data):
        username = validated_data['username']
        email = validated_data['email']
        password = validated_data['password']
        user_obj = User(
            email=email, username=username
        )
        user_obj.set_password(password)
        user_obj.save()
        return validated_data
Exemplo n.º 13
0
class UserCreateSerializer(ModelSerializer):
    token = CharField(allow_blank=True, read_only=True)
    email = EmailField(label="Email Address", write_only=True)
    email2 = EmailField(label="Confirm Email", write_only=True)

    class Meta:
        model = User
        fields = [
            "username",
            "token",
            "email",
            "email2",
            "password",
        ]
        extra_kwargs = {"password": {"write_only": True}}

    # def validate(self, data):
    #     email = data['email']
    #     user_qs = User.objects.filter(email=email2)
    #     if user_qs.exists():
    #         raise ValidationError("This email already used.")
    #     return data

    def validate_email2(self, value):
        data = self.get_initial()
        email1 = data.get("email")
        email2 = value

        if email1 != email2:
            raise ValidationError("Emails must match.")

        user_qs = User.objects.filter(email=email2)
        if user_qs.exists():
            raise ValidationError("This email already used.")

        return value

    def create(self, validated_data):
        username = validated_data["username"]
        email = validated_data["email"]
        password = validated_data["password"]
        user_obj = User(
            username=username,
            email=email,
        )
        user_obj.set_password(password)
        user_obj.save()
        payload = jwt_payload_handler(user_obj)
        token = jwt_encode_handler(payload)
        validated_data['token'] = token
        return validated_data
class UserCreateSerializer(ModelSerializer):
    email = EmailField(label='Email address')
    # overrides default nature of email being an optional field while user registration,now it's a
    # mandatory field

    email2 = EmailField(label='Confirm Email address')

    class Meta:
        model = User
        fields = [
            'username',
            'email',
            'email2',
            'password',
        ]

        extra_kwargs = {
            "password":{
                "write_only": True
            }
        }

    def validate(self, data):
        email = data['email']
        user_qs = User.objects.filter(email=email)
        if user_qs.exists():
            raise ValidationError('A user with this email has already been registered.')
        return data

    def validate_email2(self, value): # raise a validation error only for email2 field
        data = self.get_initial() # get initially filled data,whether validated or not
        email1 = data.get("email")
        email2 = value
        if email1 != email2:
            raise ValidationError('Emails donot match!')

        return value

    def create(self, validated_data):
        print "%s" % validated_data
        username = validated_data['username']
        password = validated_data['password']
        email = validated_data['email']
        user_obj = User(
            username=username,
            email=email
        )
        user_obj.set_password(password)
        user_obj.save()
        return validated_data
class UserCreateSerializer(ModelSerializer):
    email = EmailField(label='Email Address')
    email2 = EmailField(label='Confirm Email')

    class Meta:
        model = MyUser
        fields = [
            'username', 'email', 'email2', 'password', 'date_of_birth',
            'gender', 'height', 'weight', 'user_sight', 'user_hearing',
            'user_touch'
        ]
        extra_kwargs = {"password": {"write_only": True}}

    def validate(self, data):
        email = data['email']
        user_qs = MyUser.objects.filter(email=email)
        if user_qs.exists():
            raise ValidationError("This user has already registered.")
        return data

    def validate_email(self, value):
        data = self.get_initial()
        email1 = data.get("email2")
        email2 = value
        if email1 != email2:
            raise ValidationError("Emails must match.")

        user_qs = MyUser.objects.filter(email=email2)
        if user_qs.exists():
            raise ValidationError("This user has already registered.")

        return value

    def validate_email2(self, value):
        data = self.get_initial()
        email1 = data.get("email")
        email2 = value
        if email1 != email2:
            raise ValidationError("Emails must match.")
        return value

    def create(self, validated_data):
        username = validated_data['username']
        email = validated_data['email']
        password = validated_data['password']
        user_obj = MyUser(username=username, email=email)
        user_obj.set_password(password)
        user_obj.save()
        return validated_data
Exemplo n.º 16
0
class UserCreateSerializer(ModelSerializer):
    email = EmailField(label='Email Address')
    email2 = EmailField(label='Confirm Email')

    class Meta:
        model = User
        fields = [
            'username',
            'email',
            'email2',
            'password',
        ]
        # this is to prevent us from seeing the password
        extra_kwargs = {'password': {'write_only': True}}

    def validate_email(self, value):
        data = self.get_initial()
        email2 = data.get('email2')
        email1 = value
        if email2 != email1:
            raise ValidationError('Emails must match. ')
        user_qs = User.objects.filter(email=email1)
        if user_qs.exists():
            raise ValidationError('This user has been registered.  ')
        return value

    """ we are validating the email2 """

    def validate_email2(self, value):
        data = self.get_initial()
        email1 = data.get('email')
        email2 = value
        if email1 != email2:
            raise ValidationError('Emails must match. ')
        return value

    """ in here we are getting the validated data before we create the user"""

    def create(self, validated_data):
        username = validated_data['username']
        email = validated_data['email']
        password = validated_data['password']
        user_obj = User(
            username=username,
            email=email,
        )
        user_obj.set_password(password)
        user_obj.save()
        return validated_data
Exemplo n.º 17
0
class UserSerializer(serializers.ModelSerializer):

    email = EmailField(label='Email Address')

    class Meta:
        model = User
        fields = ('username', 'email', 'password')
        extra_kwargs = {'password': {'write_only': True}}

    def create(self, validated_data):
        user = User(email=validated_data['email'],
                    username=validated_data['username'])
        user.set_password(validated_data['password'])
        user.save()
        Token.objects.create(user=user)
        return user

    def validate(self, data):
        # email = data['email']
        # username = data['username']
        # user_qs = User.objects.filter(
        #   email=email) or User.objects.filter(username=username)
        # if user_qs.exists():
        #     raise ValidationError("This user has already registered.")
        return data
Exemplo n.º 18
0
class CompanySerializer(ModelSerializer):
    required = True
    name = CharField(source='first_name')
    email = EmailField(
        source='username',
        validators=[UniqueValidator(queryset=User.objects.all())])
    password = CharField(
        write_only=True,
        required=True,
        style={'input_type': 'password'},
    )

    class Meta:
        model = User
        fields = [
            'id',
            'name',
            'email',
            'profile_image',
            'password',
        ]

    def create(self, validated_data):
        """
        If profile image is not provided, 
        removing the field from the dictionary,
        so that default image is used.
        """
        if 'profile_image' in validated_data and validated_data[
                'profile_image'] == None:
            del validated_data['profile_image']
        return User.objects.create_user(**validated_data, is_company=True)
Exemplo n.º 19
0
class UserLoginSerializer(ModelSerializer):
    email = EmailField(label='Email')

    class Meta:
        model = User
        fields = ('email', 'password', 'id')
        extra_kwargs = {'password': {'write_only': True}}

    def validate(self, data):
        user_obj = None
        response = {}
        email = data.get('email', None)
        password = data.get('password', None)
        # Fetching user with email
        user = User.objects.filter(Q(email=email)).first()
        if user:
            # User exists
            user_obj = user
        else:
            # User does not exist
            response['message'] = "This email is not registered."
            raise ValidationError(response)

        if user_obj:
            # Checking password is correct or not
            if not user_obj.check_password(password):
                # Incorrect password
                response['message'] = "Password is incorrect."
                raise ValidationError(response)

        data['id'] = user_obj.id
        return data
Exemplo n.º 20
0
class UserSerializer(ModelSerializer):
    id = IntegerField(required=False)

    email = EmailField(required=False)

    first_name = CharField(required=False)
    last_name = CharField(required=False)

    account = AccountSerializer(many=False, required=False)

    def create(self, validated_data):
        # Create user
        try:
            account = validated_data.pop('account')
        except:
            # Well d'oh.
            pass

        user = auth_models.User.objects.create(**validated_data)
        return user

    class Meta:
        model = auth_models.User
        fields = [
            'id', 'username', 'email', 'first_name', 'last_name', 'account'
        ]
class UserLoginSerializer(serializers.ModelSerializer):
    email = EmailField(label='Email')
    password = CharField(write_only=True, style={'input_type': 'password'})

    class Meta:
        model = User
        fields = ('email', 'password')
        # extra_kwargs = {'password': {'write_only': True}}

    def validate(self, data):
        user_obj = None
        email = data.get("email", None)
        password = data["password"]
        if not email:
            raise exceptions.ValidationError('Email is required to login')

        user = User.objects.filter(email=email)

        if user.exists():
            user_obj = user.first()  #gives email
        else:
            raise exceptions.ValidationError('Email is not valid')
        if user_obj:
            if not user_obj.check_password(password):
                raise ValidationError("Incorrect credentials")
        return data
Exemplo n.º 22
0
class UserLoginSerializer(ModelSerializer):
    token = CharField(allow_blank=True, read_only=True)
    username = CharField(required=False, allow_blank=True)
    email = EmailField(required=False, allow_blank=True)

    class Meta:
        model = User
        fields = ['username', 'email', 'password', 'token']
        extra_kwargs = {'password': {'write_only': True}}

    def validate(self, data):
        user_obj = None
        username = data.get('username', None)
        email = data.get('email', None)
        password = data['password']

        if not username and not email:
            raise ValidationError('Username o Email es obligatorio para Login')

        user = User.objects.filter(Q(email=email)
                                   | Q(username=username)).distinct()

        if user.exists() and user.count() == 1:
            user_obj = user.first()
        else:
            raise ValidationError('El usuario o email no es valido.')

        if user_obj:
            if not user_obj.check_password(password):
                raise ValidationError(
                    'Credenciales invalidas, intentelo de nuevo.')

        data['token'] = 'ALGUN TOKEN'

        return data
Exemplo n.º 23
0
class UserLoginSerializer(ModelSerializer):
    token = CharField(allow_blank=True, read_only=True)
    username = CharField(required=False, allow_blank=True)
    email = EmailField(required=False, allow_blank=True)

    class Meta:
        model = User
        fields = [
            'email',
            'username',
            'password',
            'token',
        ]
        extra_kwargs = {'password': {'write_only': True}}

    def validate(self, data):
        email = data.get('email')
        username = data.get('username')
        password = data["password"]
        if not email and not username:
            raise ValidationError("A username or email is required to login.")
        user = User.objects.filter(Q(email=email)
                                   | Q(username=username)).distinct()
        user = user.exclude(email__isnull=True).exclude(email__iexact='')
        if user.exists() and user.count() == 1:
            user_obj = user.first()
        else:
            raise ValidationError("This username/email is not valid.")
        if user_obj:
            if not user_obj.check_password(password):
                raise ValidationError(
                    "Incorrect credentials, please try again.")

        return data
Exemplo n.º 24
0
class UserLoginSerializer(ModelSerializer):
    token = CharField(allow_blank=True, read_only=True)
    username = CharField(required=False, allow_blank=True)
    email = EmailField(label="Email Address", required=False, allow_blank=True)

    class Meta:
        model = User
        fields = ['username', 'email', 'password', 'token']
        extra_kwargs = {"password": {"write_only": True}}

    def validate(self, data):
        email = data.get('email', None)
        username = data.get('username', None)
        password = data.get('password')
        if not email and not username:
            raise ValidationError("A username or email is required to login")
        user = User.objects.filter(Q(email=email)
                                   | Q(username=username)).distinct()
        user = user.exclude(email__isnull=True).exclude(email__iexact='')
        if user.exists() and user.count() == 1:
            user_obj = user.first()
        else:
            raise ValidationError("This username or Email is not valid")

        if user_obj:
            if not user_obj.check_password(password):
                raise ValidationError("Incorrect Credential please try again")
        data["token"] = ObtainJSONWebToken()
        return data
Exemplo n.º 25
0
class UserLoginSerializer(ModelSerializer):
    username = CharField(required=False, allow_blank=True)
    email = EmailField(label='Email Address')
    password = CharField(style={'input_type': 'password'},
                         label='Password',
                         write_only=True)
    token = CharField(allow_blank=True, read_only=True)

    class Meta:
        model = User
        fields = ['username', 'email', 'password', 'token']
        extra_kwargs = {'password': {'write_only': True}}

    def validate(self, data):
        username = data.get('username', None)
        email = data.get('email', None)
        password = data['password']
        if not username and not email:
            raise ValidationError(
                "A username or email must be needed to login")
        user_obj = User.objects.filter(Q(username=username)
                                       | Q(email=email)).distinct()
        print(user_obj)
        user_obj = user_obj.exclude(email__isnull=True).exclude(
            email__iexact="")
        if user_obj.exists() and user_obj.count() == 1:
            user = user_obj.first()
            if not user.check_password(password):
                raise ValidationError(
                    "Invalid credentials for typing the password please try again."
                )
            data['token'] = "SOME DATA TOKEN"
        else:
            raise ValidationError("User not found.")
        return data
class PasswordResetSerializer(Serializer):
    """
    Serializer for requesting a password reset e-mail.
    """
    email = EmailField()
    password_reset_form_class = ResetPasswordForm

    def get_email_options(self):
        """Override this method to change default e-mail options"""
        return {}

    def validate_email(self, value):
        # Create PasswordResetForm with the serializer
        self.reset_form = self.password_reset_form_class(
            data=self.initial_data)
        if not self.reset_form.is_valid():
            raise ValidationError(self.reset_form.errors)
        return value

    def save(self):
        request = self.context.get('request')
        # Set some values to trigger the send_email method.
        opts = {
            'use_https': request.is_secure(),
            'from_email': getattr(settings, 'DEFAULT_FROM_EMAIL'),
            'request': request,
        }
        opts.update(self.get_email_options())
        self.reset_form.save(**opts)
Exemplo n.º 27
0
class UserCreateSerializer(ModelSerializer):
    email = EmailField()
    first_name = CharField()
    last_name = CharField()
    confirm_password = CharField()

    class Meta:
        model = User
        fields = (
            'id',
            'username',
            'first_name',
            'last_name',
            'email',
            'password',
            'confirm_password',
        )

    def create(self, validated_data):
        user = User(username=validated_data['username'],
                    email=validated_data['email'],
                    first_name=validated_data['first_name'],
                    last_name=validated_data['last_name'])

        user.set_password(validated_data['password'])
        user.save()

        return validated_data

    def validate_confirm_password(self, value):
        password = self.get_initial().get('password')
        if password != value:
            raise ValidationError('Confirm password do not match.')
        return value
Exemplo n.º 28
0
class UserUpdateSerializer(ModelSerializer):
    email = EmailField(label='email')

    class Meta:
        model = User
        fields = [
            'email',
            'password',
        ]
        extra_kwargs = {"password": {"write_only": True}}
        # why wee need this so after the the user submit their data
        # those data don't appear (password)
    def validate(self, data):
        if len(data['password']) < 8:
            raise ValidationError({"password": "******"})
        email = data['email']
        user_id = self.context['request'].user.id
        print(email, user_id)

        user_queryset = User.objects.filter(email=email).exclude(id=user_id)
        if user_queryset.exists():
            raise ValidationError(
                {"user": "******"})
        return data

    def create(self, validate_data):
        #username = validate_data['username']
        email = validate_data['email']
        password = validate_data['password']
        user_obj = User.objects.get(id=self.context['request'].user.id)
        #user_obj.username = username
        user_obj.email = email
        user_obj.set_password(password)
        user_obj.save()
        return validate_data
Exemplo n.º 29
0
class UserLoginSerializer(ModelSerializer):
    token = CharField(allow_blank=True, read_only=True)
    username = CharField(required=False, allow_blank=True)
    email = EmailField(label='Email Address', required=False, allow_blank=True)

    class Meta:
        model = User
        fields = (
            'username',
            'email',
            'password',
            'token'
        )
        extra_kwargs = {'password':
                            {'write_only': True}
                        }

    def validate(self, data):
        user_obj = None
        username = data['username']
        email = data['email']
        password = data['password']
        if not email and not username:
            raise ValidationError("Username or Email is required.")
        user = User.objects.filter(Q(email=email) | Q(username=username)).distinct()
        user = user.exclude(email__isnull=True).exclude(email__iexact='')
        if user.exists() and user.count() == 1:
            user_obj = user.first()
        else:
            raise ValidationError("This username/email is not valid.")
        if user_obj:
            if user_obj.check_password(password):
                raise ValidationError("The password is not valid.")
        data['token'] = "token"
        return data
Exemplo n.º 30
0
class AuthorSignupSerializer(ModelSerializer):
    email = EmailField(label="Email Address")

    class Meta:
        model = User
        fields = [
            'first_name',
            'last_name',
            'username',
            'email',
            'password',
        ]
        extra_kwargs = {
           "password": {
                "write_only": True
            }
        }

    def create(self, validated_data):
        username = validated_data['username']
        email = validated_data['email']
        password = validated_data['password']
        user_obj = User(
            username=username,
            email=email,
            first_name=validated_data['first_name'],
            last_name=validated_data['last_name']
        )
        user_obj.set_password(password)
        user_obj.save()
        role = Role.objects.filter(name='author').first()
        if not role:
            raise ValidationError("Something went wrong")
        role.users.add(user_obj)
        return validated_data