list session api

This commit is contained in:
Sayyid Hamid Mahdavi 2026-04-07 10:07:54 +03:30
parent be4df13c78
commit 9c81505a46
3 changed files with 27 additions and 2 deletions

View file

@ -1,4 +1,5 @@
from django.core.validators import RegexValidator
from oauth2_provider.models import get_access_token_model
from rest_framework import serializers
from apps.users.models import User
@ -133,3 +134,11 @@ class ChangePasswordSerializer(serializers.Serializer):
old_password = serializers.CharField(required=True)
old_password_field = serializers.CharField(default='password')
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"]

View file

@ -2,7 +2,7 @@ from django.urls import path
from django.contrib.auth.views import LogoutView
from .views import UserListView, UserPublicRetrieveView, AccountView, RequestOTPView, ChangePasswordView, \
OTPLoginView, ProfileDetailView, ProfileUpdateView, RequestOTTView, UserCurrentAvatarUrlView, UserInquiryView, \
UserDetailedRetrieveView
UserDetailedRetrieveView, UserSessionListView
app_name = "users"
@ -13,6 +13,7 @@ urlpatterns = [
path('account/update/', ProfileUpdateView.as_view(), name='account_update'),
path('api/account/', AccountView.as_view(), name='account_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>/avatar', UserCurrentAvatarUrlView.as_view(), name='user_avatar_api'),
path('api/users/<uuid>/details', UserDetailedRetrieveView.as_view(), name='user_detailed_retrieve_api'),

View file

@ -20,7 +20,7 @@ from apps.users.forms import OTPAuthenticationForm, ProfileUpdateForm
from apps.users.models import User
from apps.users.provinces_and_cities import State
from apps.users.serializers import PublicUserSerializer, AccountSerializer, RequestOTPSerializer, RequestOTTSerializer, \
ChangePasswordSerializer, UserInquirySerializer
ChangePasswordSerializer, UserInquirySerializer, SessionSerializer
from utils.throttles import RequestOTPDayRateThrottle, RequestOTPMinRateThrottle
UserModel = get_user_model()
@ -180,3 +180,18 @@ class ProfileUpdateView(UpdateView):
def form_valid(self, 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()