Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- КЛАСС USER
- class User(AbstractBaseUser):
- phone_number = models.CharField(max_length=11, unique=True)
- first_name = models.CharField(max_length=30, blank=True)
- is_active = models.BooleanField(('is_active'), default=True)
- objects = UserManager()
- USERNAME_FIELD = 'phone_number'
- def save(self, *args, **kwargs):
- super(User, self).save(*args, **kwargs)
- return self
- class UserManager(BaseUserManager):
- def _create_user(self, phone_number, password, **extra_fields):
- if not phone_number:
- raise ValueError('The given email must be set')
- try:
- with transaction.atomic():
- user = self.model(phone_number=phone_number, **extra_fields)
- user.set_password(password)
- user.save(using=self._db)
- return user
- except:
- raise
- ПЕРЕПИСАННЫЙ МНОЙ СЕРИАЛАЙЗЕР
- User = get_user_model()
- jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER
- jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER
- jwt_decode_handler = api_settings.JWT_DECODE_HANDLER
- jwt_get_username_from_payload = api_settings.JWT_PAYLOAD_GET_USERNAME_HANDLER
- class CustomJWTSerializer(JSONWebTokenSerializer):
- username_field = 'phone_number'
- def validate(self, attrs):
- password = attrs.get("password")
- user_obj = User.objects.filter(phone_number=attrs.get("phone_number")).first()
- if user_obj is not None:
- credentials = {
- 'username': user_obj.username,
- 'password': password
- }
- if all(credentials.values()):
- user = authenticate(**credentials)
- if user:
- if not user.is_active:
- msg = _('User account is disabled.')
- raise serializers.ValidationError(msg)
- payload = jwt_payload_handler(user)
- return {
- 'token': jwt_encode_handler(payload),
- 'user': user
- }
- else:
- msg = _('Unable to log in with provided credentials.')
- raise serializers.ValidationError(msg)
- else:
- msg = _('Must include "{username_field}" and "password".')
- msg = msg.format(username_field=self.username_field)
- raise serializers.ValidationError(msg)
- else:
- msg = _('Account with this email/username does not exists')
- raise serializers.ValidationError(msg)
Advertisement
Add Comment
Please, Sign In to add comment