Advertisement
Guest User

Untitled

a guest
Aug 21st, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.65 KB | None | 0 0
  1. from django.contrib.auth.models import Group
  2. from rest_framework import permissions
  3.  
  4.  
  5. def _is_in_group(user, group_name):
  6. """
  7. Takes a user and a group name, and returns `True` if the user is in that group.
  8. """
  9. try:
  10. return Group.objects.get(name=group_name).user_set.filter(id=user.id).exists()
  11. except Group.DoesNotExist:
  12. return None
  13.  
  14. def _has_group_permission(user, required_groups):
  15. return any([_is_in_group(user, group_name) for group_name in required_groups])
  16.  
  17.  
  18. class IsLoggedInUserOrAdmin(permissions.BasePermission):
  19. # group_name for super admin
  20. required_groups = ['admin']
  21.  
  22. def has_object_permission(self, request, view, obj):
  23. has_group_permission = _has_group_permission(request.user, self.required_groups)
  24. if self.required_groups is None:
  25. return False
  26. return obj == request.user or has_group_permission
  27.  
  28.  
  29. class IsAdminUser(permissions.BasePermission):
  30. # group_name for super admin
  31. required_groups = ['admin']
  32.  
  33. def has_permission(self, request, view):
  34. has_group_permission = _has_group_permission(request.user, self.required_groups)
  35. return request.user and has_group_permission
  36.  
  37. def has_object_permission(self, request, view, obj):
  38. has_group_permission = _has_group_permission(request.user, self.required_groups)
  39. return request.user and has_group_permission
  40.  
  41.  
  42. class IsAdminOrAnonymousUser(permissions.BasePermission):
  43. required_groups = ['admin', 'anonymous']
  44.  
  45. def has_permission(self, request, view):
  46. has_group_permission = _has_group_permission(request.user, self.required_groups)
  47. return request.user and has_group_permission
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement