mirror of
https://github.com/Tivix/django-rest-auth.git
synced 2025-02-23 05:10:33 +03:00
Include user and token details in login/register response
This commit is contained in:
parent
d90717e9bd
commit
160e71e3fe
|
@ -9,7 +9,7 @@ from allauth.account.views import SignupView, ConfirmEmailView
|
|||
from allauth.account.utils import complete_signup
|
||||
from allauth.account import app_settings
|
||||
|
||||
from rest_auth.app_settings import TokenSerializer
|
||||
from rest_auth.app_settings import TokenSerializer, UserDetailsSerializer
|
||||
from rest_auth.registration.serializers import SocialLoginSerializer
|
||||
from rest_auth.views import LoginView
|
||||
|
||||
|
@ -29,6 +29,7 @@ class RegisterView(APIView, SignupView):
|
|||
allowed_methods = ('POST', 'OPTIONS', 'HEAD')
|
||||
token_model = Token
|
||||
serializer_class = TokenSerializer
|
||||
response_serializer = UserDetailsSerializer
|
||||
|
||||
def get(self, *args, **kwargs):
|
||||
return Response({}, status=status.HTTP_405_METHOD_NOT_ALLOWED)
|
||||
|
@ -65,9 +66,10 @@ class RegisterView(APIView, SignupView):
|
|||
return self.get_response_with_errors()
|
||||
|
||||
def get_response(self):
|
||||
# serializer = self.user_serializer_class(instance=self.user)
|
||||
serializer = self.serializer_class(instance=self.token,
|
||||
context={'request': self.request})
|
||||
serializer = self.response_serializer(
|
||||
instance=self.user,
|
||||
context={'request': self.request}
|
||||
)
|
||||
return Response(serializer.data, status=status.HTTP_201_CREATED)
|
||||
|
||||
def get_response_with_errors(self):
|
||||
|
|
|
@ -89,18 +89,18 @@ class TokenSerializer(serializers.ModelSerializer):
|
|||
|
||||
|
||||
class UserDetailsSerializer(serializers.ModelSerializer):
|
||||
|
||||
"""
|
||||
User model w/o password
|
||||
"""
|
||||
token = serializers.ReadOnlyField(source='auth_token.key')
|
||||
|
||||
class Meta:
|
||||
model = get_user_model()
|
||||
fields = ('username', 'email', 'first_name', 'last_name')
|
||||
fields = ('username', 'email', 'first_name', 'last_name', 'token',)
|
||||
read_only_fields = ('email', )
|
||||
|
||||
|
||||
class PasswordResetSerializer(serializers.Serializer):
|
||||
|
||||
"""
|
||||
Serializer for requesting a password reset e-mail.
|
||||
"""
|
||||
|
|
|
@ -184,8 +184,8 @@ class APITestCase1(TestCase, BaseAPITestCase):
|
|||
user = get_user_model().objects.create_user(self.USERNAME, '', self.PASS)
|
||||
|
||||
self.post(self.login_url, data=payload, status_code=200)
|
||||
self.assertEqual('key' in self.response.json.keys(), True)
|
||||
self.token = self.response.json['key']
|
||||
self.assertEqual('token' in self.response.json.keys(), True)
|
||||
self.token = self.response.json['token']
|
||||
|
||||
self.post(self.password_change_url, status_code=400)
|
||||
|
||||
|
@ -211,7 +211,7 @@ class APITestCase1(TestCase, BaseAPITestCase):
|
|||
}
|
||||
get_user_model().objects.create_user(self.USERNAME, '', self.PASS)
|
||||
self.post(self.login_url, data=login_payload, status_code=200)
|
||||
self.token = self.response.json['key']
|
||||
self.token = self.response.json['token']
|
||||
|
||||
new_password_payload = {
|
||||
"new_password1": "new_person",
|
||||
|
@ -252,7 +252,7 @@ class APITestCase1(TestCase, BaseAPITestCase):
|
|||
}
|
||||
get_user_model().objects.create_user(self.USERNAME, '', self.PASS)
|
||||
self.post(self.login_url, data=login_payload, status_code=200)
|
||||
self.token = self.response.json['key']
|
||||
self.token = self.response.json['token']
|
||||
|
||||
new_password_payload = {
|
||||
"old_password": "%s!" % self.PASS, # wrong password
|
||||
|
@ -345,7 +345,7 @@ class APITestCase1(TestCase, BaseAPITestCase):
|
|||
"password": self.PASS
|
||||
}
|
||||
self.post(self.login_url, data=payload, status_code=200)
|
||||
self.token = self.response.json['key']
|
||||
self.token = self.response.json['token']
|
||||
self.get(self.user_url, status_code=200)
|
||||
|
||||
self.patch(self.user_url, data=self.BASIC_USER_DATA, status_code=200)
|
||||
|
@ -479,12 +479,12 @@ class TestSocialAuth(TestCase, BaseAPITestCase):
|
|||
}
|
||||
|
||||
self.post(self.fb_login_url, data=payload, status_code=200)
|
||||
self.assertIn('key', self.response.json.keys())
|
||||
self.assertIn('token', self.response.json.keys())
|
||||
self.assertEqual(get_user_model().objects.all().count(), users_count + 1)
|
||||
|
||||
# make sure that second request will not create a new user
|
||||
self.post(self.fb_login_url, data=payload, status_code=200)
|
||||
self.assertIn('key', self.response.json.keys())
|
||||
self.assertIn('token', self.response.json.keys())
|
||||
self.assertEqual(get_user_model().objects.all().count(), users_count + 1)
|
||||
|
||||
@responses.activate
|
||||
|
@ -531,4 +531,4 @@ class TestSocialAuth(TestCase, BaseAPITestCase):
|
|||
}
|
||||
|
||||
self.post(self.fb_login_url, data=payload, status_code=200)
|
||||
self.assertIn('key', self.response.json.keys())
|
||||
self.assertIn('token', self.response.json.keys())
|
||||
|
|
|
@ -30,7 +30,7 @@ class LoginView(GenericAPIView):
|
|||
permission_classes = (AllowAny,)
|
||||
serializer_class = LoginSerializer
|
||||
token_model = Token
|
||||
response_serializer = TokenSerializer
|
||||
response_serializer = UserDetailsSerializer
|
||||
|
||||
def login(self):
|
||||
self.user = self.serializer.validated_data['user']
|
||||
|
@ -41,7 +41,7 @@ class LoginView(GenericAPIView):
|
|||
|
||||
def get_response(self):
|
||||
return Response(
|
||||
self.response_serializer(self.token).data, status=status.HTTP_200_OK
|
||||
self.response_serializer(self.user).data, status=status.HTTP_200_OK
|
||||
)
|
||||
|
||||
def get_error_response(self):
|
||||
|
|
Loading…
Reference in New Issue
Block a user