From f01d6d362935e70629d7f060c9a4c043c7bceb74 Mon Sep 17 00:00:00 2001 From: mahdavi Date: Mon, 22 Jul 2024 15:12:09 +0330 Subject: [PATCH] my application list --- apps/gooyal_oauth2/serializers.py | 14 ++++++++++++++ apps/gooyal_oauth2/urls.py | 8 ++++++-- apps/gooyal_oauth2/views/apis.py | 19 +++++++++++++++++++ 3 files changed, 39 insertions(+), 2 deletions(-) create mode 100755 apps/gooyal_oauth2/serializers.py create mode 100644 apps/gooyal_oauth2/views/apis.py diff --git a/apps/gooyal_oauth2/serializers.py b/apps/gooyal_oauth2/serializers.py new file mode 100755 index 0000000..285d78f --- /dev/null +++ b/apps/gooyal_oauth2/serializers.py @@ -0,0 +1,14 @@ +from rest_framework import serializers +from .models import Application + + +class ApplicationSerializer(serializers.ModelSerializer): + class Meta: + model = Application + fields = ('uuid', + 'client_id', + 'user', + 'allowed_scope', + ) + + read_only_fields = fields diff --git a/apps/gooyal_oauth2/urls.py b/apps/gooyal_oauth2/urls.py index 8fc04cd..aeb2755 100644 --- a/apps/gooyal_oauth2/urls.py +++ b/apps/gooyal_oauth2/urls.py @@ -1,8 +1,10 @@ from django.urls import re_path from oauth2_provider import views -from .views.introspect import IntrospectTokenView, IntrospectApplicationView +from rest_framework import routers +from .views.introspect import IntrospectTokenView, IntrospectApplicationView +from .views import apis as api_views app_name = "oauth2_provider" @@ -14,6 +16,8 @@ base_urlpatterns = [ re_path(r"^introspect_application/$", IntrospectApplicationView.as_view(), name="introspect-application"), ] +router = routers.SimpleRouter() +router.register(r'apis/applications', api_views.ApplicationViewSet, basename='application') management_urlpatterns = [ # Application management views @@ -47,4 +51,4 @@ oidc_urlpatterns = [ ] -urlpatterns = base_urlpatterns + management_urlpatterns + oidc_urlpatterns +urlpatterns = base_urlpatterns + management_urlpatterns + oidc_urlpatterns + router.urls diff --git a/apps/gooyal_oauth2/views/apis.py b/apps/gooyal_oauth2/views/apis.py new file mode 100644 index 0000000..a3d07e6 --- /dev/null +++ b/apps/gooyal_oauth2/views/apis.py @@ -0,0 +1,19 @@ +from oauth2_provider.contrib.rest_framework import TokenHasScope +from rest_framework import generics +from rest_framework.viewsets import ReadOnlyModelViewSet + +from ..models import Application +from ..rest_framework import IsAuthenticatedOrTokenMatchesOASRequirements +from ..serializers import ApplicationSerializer + + +class ApplicationViewSet(ReadOnlyModelViewSet): + serializer_class = ApplicationSerializer + lookup_field = 'uuid' + permission_classes = [IsAuthenticatedOrTokenMatchesOASRequirements] + required_alternate_scopes = { + "GET": [['accounts.applications:list_or_retrieve']], + } + def get_queryset(self): + user = self.request.user + return Application.objects.filter(user=user).all()