Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class TokenCreateSerializer(serializers.Serializer):
- password = serializers.CharField(
- required=False, style={'input_type': 'password'}
- )
- default_error_messages = {
- 'invalid_credentials': constants.INVALID_CREDENTIALS_ERROR,
- 'inactive_account': constants.INACTIVE_ACCOUNT_ERROR,
- }
- def __init__(self, *args, **kwargs):
- super(TokenCreateSerializer, self).__init__(*args, **kwargs)
- self.user = None
- self.fields[User.USERNAME_FIELD] = serializers.CharField(
- required=False
- )
- def validate(self, attrs):
- self.user = authenticate(
- username=attrs.get(User.USERNAME_FIELD),
- password=attrs.get('password')
- )
- self._validate_user_exists(self.user)
- self._validate_user_is_active(self.user)
- return attrs
- def _validate_user_exists(self, user):
- if not user:
- self.fail('invalid_credentials')
- def _validate_user_is_active(self, user):
- if not user.is_active:
- self.fail('inactive_account')
- class CustomTokenCreateView(cutils.ActionViewMixin, generics.GenericAPIView):
- """
- Use this endpoint to obtain user authentication token.
- """
- serializer_class = TokenCreateSerializer
- permission_classes = [permissions.AllowAny]
- def _action(self, serializer):
- token = utils.login_user(self.request, serializer.user)
- token_serializer_class = settings.SERIALIZERS.token
- content = {
- 'Token': token_serializer_class(token).data["auth_token"],
- 'promptmsg': 'You have successfully login',
- 'status': '200',
- 'first_name': self.request.user.first_name,
- 'last_name': self.request.user.last_name
- }
- return Response(
- data=content,
- status=status.HTTP_200_OK,
- )
- AttributeError at /logintest/
- 'AnonymousUser' object has no attribute 'first_name'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement