iawitm

Untitled

Apr 6th, 2019
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.63 KB | None | 0 0
  1. КЛАСС USER
  2.  
  3. class User(AbstractBaseUser):
  4.     phone_number = models.CharField(max_length=11, unique=True)
  5.     first_name = models.CharField(max_length=30, blank=True)
  6.     is_active = models.BooleanField(('is_active'), default=True)
  7.  
  8.     objects = UserManager()
  9.  
  10.     USERNAME_FIELD = 'phone_number'
  11.  
  12.     def save(self, *args, **kwargs):
  13.         super(User, self).save(*args, **kwargs)
  14.         return self
  15.  
  16.  
  17. class UserManager(BaseUserManager):
  18.  
  19.     def _create_user(self, phone_number, password, **extra_fields):
  20.         if not phone_number:
  21.             raise ValueError('The given email must be set')
  22.         try:
  23.             with transaction.atomic():
  24.                 user = self.model(phone_number=phone_number, **extra_fields)
  25.                 user.set_password(password)
  26.                 user.save(using=self._db)
  27.                 return user
  28.         except:
  29.             raise
  30.  
  31.  
  32. ПЕРЕПИСАННЫЙ МНОЙ СЕРИАЛАЙЗЕР
  33.  
  34. User = get_user_model()
  35. jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER
  36. jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER
  37. jwt_decode_handler = api_settings.JWT_DECODE_HANDLER
  38. jwt_get_username_from_payload = api_settings.JWT_PAYLOAD_GET_USERNAME_HANDLER
  39.  
  40.  
  41. class CustomJWTSerializer(JSONWebTokenSerializer):
  42.     username_field = 'phone_number'
  43.  
  44.     def validate(self, attrs):
  45.  
  46.         password = attrs.get("password")
  47.         user_obj = User.objects.filter(phone_number=attrs.get("phone_number")).first()
  48.         if user_obj is not None:
  49.             credentials = {
  50.                 'username': user_obj.username,
  51.                 'password': password
  52.             }
  53.             if all(credentials.values()):
  54.                 user = authenticate(**credentials)
  55.                 if user:
  56.                     if not user.is_active:
  57.                         msg = _('User account is disabled.')
  58.                         raise serializers.ValidationError(msg)
  59.  
  60.                     payload = jwt_payload_handler(user)
  61.  
  62.                     return {
  63.                         'token': jwt_encode_handler(payload),
  64.                         'user': user
  65.                     }
  66.                 else:
  67.                     msg = _('Unable to log in with provided credentials.')
  68.                     raise serializers.ValidationError(msg)
  69.  
  70.             else:
  71.                 msg = _('Must include "{username_field}" and "password".')
  72.                 msg = msg.format(username_field=self.username_field)
  73.                 raise serializers.ValidationError(msg)
  74.  
  75.         else:
  76.             msg = _('Account with this email/username does not exists')
  77.             raise serializers.ValidationError(msg)
Advertisement
Add Comment
Please, Sign In to add comment