|
156
|
1 |
from django.contrib.auth import authenticate, get_user_model |
|
|
2 |
from django.utils.translation import ugettext_lazy as _ |
|
|
3 |
from rest_framework import exceptions, serializers |
|
|
4 |
|
|
|
5 |
|
|
|
6 |
class AuthTokenSerializer(serializers.Serializer): |
|
|
7 |
email = serializers.CharField() |
|
|
8 |
password = serializers.CharField(style={'input_type': 'password'}) |
|
|
9 |
|
|
|
10 |
def validate(self, attrs): |
|
|
11 |
email = attrs.get('email') |
|
|
12 |
password = attrs.get('password') |
|
|
13 |
|
|
|
14 |
if email and password: |
|
|
15 |
user = authenticate(email=email, password=password) |
|
|
16 |
|
|
|
17 |
if user: |
|
|
18 |
if not user.is_active: |
|
|
19 |
msg = _('User account is disabled.') |
|
|
20 |
raise exceptions.ValidationError(msg) |
|
|
21 |
else: |
|
|
22 |
msg = _('Unable to log in with provided credentials.') |
|
|
23 |
raise exceptions.ValidationError(msg) |
|
|
24 |
else: |
|
|
25 |
msg = _('Must include "email" and "password".') |
|
|
26 |
raise exceptions.ValidationError(msg) |
|
|
27 |
|
|
|
28 |
attrs['user'] = user |
|
|
29 |
return attrs |
|
|
30 |
|
|
|
31 |
class UserSerializer(serializers.ModelSerializer): |
|
|
32 |
|
|
|
33 |
class Meta: |
|
|
34 |
model = get_user_model() |
|
|
35 |
fields = ('id', 'email', 'last_login', 'id_user') |