mirror of
https://github.com/Tivix/django-rest-auth.git
synced 2025-07-22 13:39:45 +03:00
Merge a2bc1b5196
into 8afba8ca16
This commit is contained in:
commit
617e9b489e
|
@ -493,3 +493,17 @@ class APITestCase1(TestCase, BaseAPITestCase):
|
||||||
|
|
||||||
self.post(self.login_url, data=payload, status_code=status.HTTP_200_OK)
|
self.post(self.login_url, data=payload, status_code=status.HTTP_200_OK)
|
||||||
self.get(self.logout_url, status_code=status.HTTP_405_METHOD_NOT_ALLOWED)
|
self.get(self.logout_url, status_code=status.HTTP_405_METHOD_NOT_ALLOWED)
|
||||||
|
|
||||||
|
def test_user_authentication_status(self):
|
||||||
|
user = get_user_model().objects.create_user(self.USERNAME, self.EMAIL, self.PASS)
|
||||||
|
|
||||||
|
self._login()
|
||||||
|
self.token = self.response.json['key']
|
||||||
|
|
||||||
|
self.get(self.user_authenticated_status_url, status_code=200)
|
||||||
|
self.assertTrue(self.response.json['authenticated'])
|
||||||
|
|
||||||
|
self._logout()
|
||||||
|
|
||||||
|
self.get(self.user_authenticated_status_url, status_code=401)
|
||||||
|
self.assertFalse(self.response.json['authenticated'])
|
||||||
|
|
|
@ -97,6 +97,7 @@ class BaseAPITestCase(object):
|
||||||
self.register_url = reverse('rest_register')
|
self.register_url = reverse('rest_register')
|
||||||
self.password_reset_url = reverse('rest_password_reset')
|
self.password_reset_url = reverse('rest_password_reset')
|
||||||
self.user_url = reverse('rest_user_details')
|
self.user_url = reverse('rest_user_details')
|
||||||
|
self.user_authenticated_status_url = reverse('rest_auth_status')
|
||||||
self.verify_email_url = reverse('rest_verify_email')
|
self.verify_email_url = reverse('rest_verify_email')
|
||||||
self.fb_login_url = reverse('fb_login')
|
self.fb_login_url = reverse('fb_login')
|
||||||
self.tw_login_url = reverse('tw_login')
|
self.tw_login_url = reverse('tw_login')
|
||||||
|
|
|
@ -2,7 +2,7 @@ from django.conf.urls import url
|
||||||
|
|
||||||
from rest_auth.views import (
|
from rest_auth.views import (
|
||||||
LoginView, LogoutView, UserDetailsView, PasswordChangeView,
|
LoginView, LogoutView, UserDetailsView, PasswordChangeView,
|
||||||
PasswordResetView, PasswordResetConfirmView
|
PasswordResetView, PasswordResetConfirmView, UserAuthenticationStatusView
|
||||||
)
|
)
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
|
@ -15,6 +15,8 @@ urlpatterns = [
|
||||||
# URLs that require a user to be logged in with a valid session / token.
|
# URLs that require a user to be logged in with a valid session / token.
|
||||||
url(r'^logout/$', LogoutView.as_view(), name='rest_logout'),
|
url(r'^logout/$', LogoutView.as_view(), name='rest_logout'),
|
||||||
url(r'^user/$', UserDetailsView.as_view(), name='rest_user_details'),
|
url(r'^user/$', UserDetailsView.as_view(), name='rest_user_details'),
|
||||||
|
url(r'^user/status/$', UserAuthenticationStatusView.as_view(),
|
||||||
|
name='rest_auth_status'),
|
||||||
url(r'^password/change/$', PasswordChangeView.as_view(),
|
url(r'^password/change/$', PasswordChangeView.as_view(),
|
||||||
name='rest_password_change'),
|
name='rest_password_change'),
|
||||||
]
|
]
|
||||||
|
|
|
@ -14,6 +14,7 @@ from rest_framework.views import APIView
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework.generics import GenericAPIView, RetrieveUpdateAPIView
|
from rest_framework.generics import GenericAPIView, RetrieveUpdateAPIView
|
||||||
from rest_framework.permissions import IsAuthenticated, AllowAny
|
from rest_framework.permissions import IsAuthenticated, AllowAny
|
||||||
|
from rest_framework.authentication import SessionAuthentication, TokenAuthentication
|
||||||
|
|
||||||
from .app_settings import (
|
from .app_settings import (
|
||||||
TokenSerializer, UserDetailsSerializer, LoginSerializer,
|
TokenSerializer, UserDetailsSerializer, LoginSerializer,
|
||||||
|
@ -153,6 +154,27 @@ class UserDetailsView(RetrieveUpdateAPIView):
|
||||||
return get_user_model().objects.none()
|
return get_user_model().objects.none()
|
||||||
|
|
||||||
|
|
||||||
|
class UserAuthenticationStatusView(APIView):
|
||||||
|
"""
|
||||||
|
Checks is_authenticated attribute for User attached to request.
|
||||||
|
Accepts GET method.
|
||||||
|
|
||||||
|
Returns True/False indicator for if user is authenticated.
|
||||||
|
"""
|
||||||
|
authentication_classes = (TokenAuthentication,)
|
||||||
|
permission_classes = ()
|
||||||
|
|
||||||
|
def get(self, request, *args, **kwargs):
|
||||||
|
if hasattr(self.request, "user") and self.request.user.is_authenticated:
|
||||||
|
return Response(
|
||||||
|
{"authenticated": True}, status=status.HTTP_200_OK
|
||||||
|
)
|
||||||
|
|
||||||
|
return Response(
|
||||||
|
{"authenticated": False}, status=status.HTTP_401_UNAUTHORIZED
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class PasswordResetView(GenericAPIView):
|
class PasswordResetView(GenericAPIView):
|
||||||
"""
|
"""
|
||||||
Calls Django Auth PasswordResetForm save method.
|
Calls Django Auth PasswordResetForm save method.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user