DRF Custom Permission

 

  Django에서 특정 그룹에 속해있는 유저만 실행할 수 있는 viewset을 만들어봅시다 !! 

  일단 "NGEE" 라는 그룹이 생성되어 있다고 가정할 때 아래와 같은 permission 클래스를 하나 만들어줍니다.

   ngeePermission의 has_permission이 하는 일은 request.user.groups 이름을 가지고 와서 거기에 NGEE가 있는지 없는지를 리턴해줍니다. NGEE 라는 그룹에 속해있다면 True가 리턴될 것이고 반대로 속해있지 않다면 False가 리턴되겠죠?

from rest_framework.permission import BasePermission

class ngeePermission(BasePermission)
  def has_permission(self, request, view):
    return 'NGEE' in request.user.groups.value_list('name', flat=True)



  실제 permission을 적용할 viewset에서는 아래와 같이 적용합니다.

class targetViewSet(viewsets.ViewSet):
  ...
  permission_classes = (ngeePermission, )
  ...

  이제 targetViewSet의 모든 함수들은 ngeePermission을 체크해서 작동하게 됩니다. 

 

 

  조금 더 복잡하게는 list나 retrieve 에는 누구나 사용할 수 있도록 권한을 열어주고 create, delete 등의 함수에는 권한이 있는 사람들만 사용할 수 있도록 하는 것도 가능합니다. 

+ Recent posts