list session api
This commit is contained in:
parent
be4df13c78
commit
9c81505a46
3 changed files with 27 additions and 2 deletions
|
|
@ -1,4 +1,5 @@
|
||||||
from django.core.validators import RegexValidator
|
from django.core.validators import RegexValidator
|
||||||
|
from oauth2_provider.models import get_access_token_model
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
from apps.users.models import User
|
from apps.users.models import User
|
||||||
|
|
@ -133,3 +134,11 @@ class ChangePasswordSerializer(serializers.Serializer):
|
||||||
old_password = serializers.CharField(required=True)
|
old_password = serializers.CharField(required=True)
|
||||||
old_password_field = serializers.CharField(default='password')
|
old_password_field = serializers.CharField(default='password')
|
||||||
new_password = serializers.CharField(required=True)
|
new_password = serializers.CharField(required=True)
|
||||||
|
|
||||||
|
|
||||||
|
AccessToken = get_access_token_model()
|
||||||
|
class SessionSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = AccessToken
|
||||||
|
fields = ('uuid', 'token', 'created', "detail")
|
||||||
|
read_only_fields = ['uuid', 'token', 'created', "detail"]
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ from django.urls import path
|
||||||
from django.contrib.auth.views import LogoutView
|
from django.contrib.auth.views import LogoutView
|
||||||
from .views import UserListView, UserPublicRetrieveView, AccountView, RequestOTPView, ChangePasswordView, \
|
from .views import UserListView, UserPublicRetrieveView, AccountView, RequestOTPView, ChangePasswordView, \
|
||||||
OTPLoginView, ProfileDetailView, ProfileUpdateView, RequestOTTView, UserCurrentAvatarUrlView, UserInquiryView, \
|
OTPLoginView, ProfileDetailView, ProfileUpdateView, RequestOTTView, UserCurrentAvatarUrlView, UserInquiryView, \
|
||||||
UserDetailedRetrieveView
|
UserDetailedRetrieveView, UserSessionListView
|
||||||
|
|
||||||
app_name = "users"
|
app_name = "users"
|
||||||
|
|
||||||
|
|
@ -13,6 +13,7 @@ urlpatterns = [
|
||||||
path('account/update/', ProfileUpdateView.as_view(), name='account_update'),
|
path('account/update/', ProfileUpdateView.as_view(), name='account_update'),
|
||||||
path('api/account/', AccountView.as_view(), name='account_api'),
|
path('api/account/', AccountView.as_view(), name='account_api'),
|
||||||
path('api/users/', UserListView.as_view(), name='user_list_api'),
|
path('api/users/', UserListView.as_view(), name='user_list_api'),
|
||||||
|
path('api/sessions/', UserSessionListView.as_view(), name='user_sessions_api'),
|
||||||
path('api/users/<uuid>/', UserPublicRetrieveView.as_view(), name='user_public_retrieve_api'),
|
path('api/users/<uuid>/', UserPublicRetrieveView.as_view(), name='user_public_retrieve_api'),
|
||||||
path('api/users/<uuid>/avatar', UserCurrentAvatarUrlView.as_view(), name='user_avatar_api'),
|
path('api/users/<uuid>/avatar', UserCurrentAvatarUrlView.as_view(), name='user_avatar_api'),
|
||||||
path('api/users/<uuid>/details', UserDetailedRetrieveView.as_view(), name='user_detailed_retrieve_api'),
|
path('api/users/<uuid>/details', UserDetailedRetrieveView.as_view(), name='user_detailed_retrieve_api'),
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ from apps.users.forms import OTPAuthenticationForm, ProfileUpdateForm
|
||||||
from apps.users.models import User
|
from apps.users.models import User
|
||||||
from apps.users.provinces_and_cities import State
|
from apps.users.provinces_and_cities import State
|
||||||
from apps.users.serializers import PublicUserSerializer, AccountSerializer, RequestOTPSerializer, RequestOTTSerializer, \
|
from apps.users.serializers import PublicUserSerializer, AccountSerializer, RequestOTPSerializer, RequestOTTSerializer, \
|
||||||
ChangePasswordSerializer, UserInquirySerializer
|
ChangePasswordSerializer, UserInquirySerializer, SessionSerializer
|
||||||
from utils.throttles import RequestOTPDayRateThrottle, RequestOTPMinRateThrottle
|
from utils.throttles import RequestOTPDayRateThrottle, RequestOTPMinRateThrottle
|
||||||
|
|
||||||
UserModel = get_user_model()
|
UserModel = get_user_model()
|
||||||
|
|
@ -180,3 +180,18 @@ class ProfileUpdateView(UpdateView):
|
||||||
|
|
||||||
def form_valid(self, form):
|
def form_valid(self, form):
|
||||||
return super().form_valid(form)
|
return super().form_valid(form)
|
||||||
|
|
||||||
|
|
||||||
|
class UserSessionListView(generics.ListAPIView):
|
||||||
|
permission_classes = [IsAuthenticatedOrTokenMatchesOASRequirements]
|
||||||
|
serializer_class = SessionSerializer
|
||||||
|
filter_backends = (DjangoFilterBackend,)
|
||||||
|
|
||||||
|
required_alternate_scopes = {
|
||||||
|
"GET": [["accounts.account:retrieve"]],
|
||||||
|
}
|
||||||
|
|
||||||
|
def get_queryset(self):
|
||||||
|
from apps.gooyal_oauth2.models import AccessToken
|
||||||
|
return AccessToken.objects.filter(user=self.request.user).all()
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue