mirror of
				https://github.com/encode/django-rest-framework.git
				synced 2025-10-31 16:07:38 +03:00 
			
		
		
		
	When incorrect parameters are supplied to the obtain auth token view 400 *is* the correct response.
		
			
				
	
	
		
			25 lines
		
	
	
		
			860 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			860 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| from django.contrib.auth import authenticate
 | |
| from rest_framework import serializers
 | |
| 
 | |
| 
 | |
| class AuthTokenSerializer(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:
 | |
|                     raise serializers.ValidationError('User account is disabled.')
 | |
|                 attrs['user'] = user
 | |
|                 return attrs
 | |
|             else:
 | |
|                 raise serializers.ValidationError('Unable to login with provided credentials.')
 | |
|         else:
 | |
|             raise serializers.ValidationError('Must include "username" and "password"')
 |