Initial commit
This commit is contained in:
26
backend/snippets/permissions.py
Normal file
26
backend/snippets/permissions.py
Normal file
@ -0,0 +1,26 @@
|
||||
from rest_framework import permissions
|
||||
from snippets.models import SnippetParticipant
|
||||
|
||||
|
||||
class IsOwnerOrReadOnly(permissions.BasePermission):
|
||||
"""
|
||||
Custom permission to only allow owners of an object to edit it.
|
||||
"""
|
||||
|
||||
def has_object_permission(self, request, view, obj):
|
||||
# Read permissions are allowed to any request,
|
||||
# so we'll always allow GET, HEAD or OPTIONS requests.
|
||||
if request.method in permissions.SAFE_METHODS:
|
||||
return True
|
||||
|
||||
# Write permissions are only allowed to the owner of the snippet.
|
||||
return obj.owner == request.user
|
||||
|
||||
|
||||
class IsAccessedOrDeny(permissions.BasePermission):
|
||||
|
||||
def has_object_permission(self, request, view, obj):
|
||||
if obj.owner == request.user:
|
||||
return True
|
||||
allowed_users = SnippetParticipant.objects.filter(snippet=obj)
|
||||
return request.user in [i.user for i in allowed_users]
|
||||
Reference in New Issue
Block a user