parent
f07dff7dcd
commit
5e7f57857b
2 changed files with 41 additions and 2 deletions
@ -0,0 +1,39 @@ |
||||
from django.utils.translation import ugettext_lazy as _ |
||||
|
||||
from rest_framework import serializers |
||||
from rest_framework.authtoken.views import ObtainAuthToken |
||||
from rest_framework.compat import authenticate |
||||
|
||||
|
||||
class AuthTokenSerializer(serializers.Serializer): |
||||
email = serializers.CharField(label=_("Email")) |
||||
password = serializers.CharField( |
||||
label=_("Password"), |
||||
style={'input_type': 'password'}, |
||||
trim_whitespace=False |
||||
) |
||||
|
||||
def validate(self, attrs): |
||||
email = attrs.get('email') |
||||
password = attrs.get('password') |
||||
|
||||
if email and password: |
||||
user = authenticate(request=self.context.get('request'), |
||||
email=email, password=password) |
||||
|
||||
# The authenticate call simply returns None for is_active=False |
||||
# users. (Assuming the default ModelBackend authentication |
||||
# backend.) |
||||
if not user: |
||||
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 |
||||
|
||||
|
||||
class ObtainToken(ObtainAuthToken): |
||||
serializer_class = AuthTokenSerializer |
||||
Loading…
Reference in new issue