Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class UserAuthenticationView(APIView):
- def post(self, request, *args, **kwargs):
- serializer = UserAuthenticationSerializer(data=self.request.data)
- if serializer.is_valid():
- user = serializer.validated_data['user']
- return Response({'token': user.auth_token.key}, status=status.HTTP_200_OK)
- return Response(serializer.errors, status=status.HTTP_401_UNAUTHORIZED)
- class UserAuthenticationSerializer(serializers.Serializer):
- username = serializers.CharField()
- password = serializers.CharField()
- def validate(self, attrs):
- username = attrs.get('username')
- password = attrs.get('password')
- if username and password:
- user = authenticate(username=username, password=password)
- if user:
- if not user.is_active:
- msg = 'User account is disabled.'
- raise serializers.ValidationError(msg, code='authorization')
- else:
- msg = 'Unable to log in with provided credentials.'
- raise serializers.ValidationError(msg, code='authorization')
- else:
- msg = 'Must include "username" and "password".'
- raise serializers.ValidationError(msg, code='authorization')
- attrs['user'] = user
- return attrs
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement