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