Skip to content

Commit cb2c31f

Browse files
committed
feat: add HasLibraryPermission in api views
1 parent 9d06ab0 commit cb2c31f

2 files changed

Lines changed: 18 additions & 0 deletions

File tree

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,17 @@
11
"""Permissions for the Open edX AuthZ REST API."""
2+
3+
from rest_framework.permissions import SAFE_METHODS, BasePermission
4+
5+
from openedx_authz.api.users import user_has_permission
6+
7+
8+
class HasLibraryPermission(BasePermission):
9+
"""Permission to check if the user has the library permission."""
10+
11+
def has_permission(self, request, view):
12+
"""Check if the user has the library permission."""
13+
scope = request.data.get("scope") if request.data else request.query_params.get("scope")
14+
15+
if request.method in SAFE_METHODS:
16+
return user_has_permission(request.user.username, "view_library_team", scope)
17+
return user_has_permission(request.user.username, "manage_library_team", scope)

openedx_authz/rest_api/v1/views.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
from openedx_authz import api
1818
from openedx_authz.rest_api.utils import filter_users, get_user_by_username_or_email, sort_users, view_auth_classes
1919
from openedx_authz.rest_api.v1.paginators import AuthZAPIViewPagination
20+
from openedx_authz.rest_api.v1.permissions import HasLibraryPermission
2021
from openedx_authz.rest_api.v1.serializers import (
2122
AddUserToRoleWithScopeSerializer,
2223
ListRolesWithScopeResponseSerializer,
@@ -85,6 +86,7 @@ class RoleUserAPIView(APIView):
8586
"""
8687

8788
pagination_class = AuthZAPIViewPagination
89+
permission_classes = [HasLibraryPermission]
8890

8991
@apidocs.schema(
9092
parameters=[

0 commit comments

Comments
 (0)