2018-05-18 16:47:35 +00:00
|
|
|
from rest_framework.permissions import BasePermission
|
|
|
|
|
|
|
|
|
|
|
|
class HasUserPermission(BasePermission):
|
|
|
|
"""
|
|
|
|
Ensure the request user has the proper permissions.
|
|
|
|
|
|
|
|
Usage:
|
|
|
|
|
|
|
|
class MyView(APIView):
|
|
|
|
permission_classes = [HasUserPermission]
|
|
|
|
required_permissions = ['federation']
|
|
|
|
"""
|
2018-06-09 13:36:16 +00:00
|
|
|
|
2018-05-18 16:47:35 +00:00
|
|
|
def has_permission(self, request, view):
|
2018-06-09 13:36:16 +00:00
|
|
|
if not hasattr(request, "user") or not request.user:
|
2018-05-18 16:47:35 +00:00
|
|
|
return False
|
|
|
|
if request.user.is_anonymous:
|
|
|
|
return False
|
2018-06-09 13:36:16 +00:00
|
|
|
operator = getattr(view, "permission_operator", "and")
|
2018-05-24 20:38:26 +00:00
|
|
|
return request.user.has_permissions(
|
2018-06-09 13:36:16 +00:00
|
|
|
*view.required_permissions, operator=operator
|
|
|
|
)
|