Skip to content
This repository was archived by the owner on Sep 20, 2024. It is now read-only.

Commit b1f4140

Browse files
authored
Allow OAuth Applications Access (#60)
This commit allows OAuth Applications that are not bound to a specific user access to the /api/v1/users and /api/v1/courses endpoints.
1 parent dbfe3a7 commit b1f4140

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

api/v1/views.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
from rest_framework import serializers, views, viewsets, filters, decorators
1+
from rest_framework import serializers, views, viewsets, filters, decorators, \
2+
permissions
23
from django_filters.rest_framework import DjangoFilterBackend
34
from django import shortcuts
45
from django import conf
@@ -8,6 +9,12 @@
89
from api.filters import extended as extended_filters
910

1011

12+
class UserOrOAuthApplication(permissions.BasePermission):
13+
def has_permission(self, request, view):
14+
return (request.user and request.user.is_authenticated) or \
15+
(request.auth and request.auth.application)
16+
17+
1118
class StudentSerializer(serializers.ModelSerializer):
1219
class Meta:
1320
model = core_models.Student
@@ -29,6 +36,7 @@ class Meta:
2936
class StudentViewSet(viewsets.ReadOnlyModelViewSet):
3037
# Permissions
3138
required_scopes = []
39+
permission_classes = [UserOrOAuthApplication]
3240

3341
# Content
3442
queryset = core_models.Student.objects.all()
@@ -67,6 +75,7 @@ def image(self, request, username=None):
6775
class CourseView(viewsets.ReadOnlyModelViewSet):
6876
# Permissions
6977
required_scopes = []
78+
permission_classes = [UserOrOAuthApplication]
7079

7180
# Content
7281
queryset = core_models.Course.objects.all()

0 commit comments

Comments
 (0)