Todos los miembros activos de un circulo pueden eliminar a cualquier usuario del mismo sin ser admin.
Podemos solucionarlo añadiendo un permiso extra para la accion destroy como:
class IsAdminOrMembershipOwner(BasePermission):
"""
Allow accese only to (Circle's admin) or users
that are owner of the membership (object).
"""
def has_permission(self, request, view):
membership = view.get_object()
if membership.user == request.user:
return True
try:
Membership.objects.get(
circle=view.circle,
user=request.user,
is_active=True,
is_admin=True
)
except Membership.DoesNotExist:
return False
return True
Solo permite al usuario eliminarse a si mismo o que los admin puedan eliminar a cualquiera.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?
o inicia sesión.