У меня есть модель много пользователей и модель клиента с отношением OneToOne к пользователю.
Я установил аутентификацию для модели User, где пользователь может редактировать / обновлять / удалять только свой профиль. Но я хочу, чтобы модель клиента также была доступна (список / создание / обновление и т. Д.) Аутентифицированному пользователю.
Мой класс разрешений для Клиента:
class UpdateCustomerProfile(permissions.BasePermission):
"""Allow customers to edit their own profile """
def has_permission(self, request, view):
"""Check if user is authenticated and has permisson to access customer model """
if view.action == 'list':
return request.user.is_authenticated and request.user.is_superuser
elif view.action == 'create':
return request.user.is_authenticated
elif view.action in ['retrieve', 'update', 'partial_update', 'destroy']:
return request.user.is_authenticated
else:
return False
Мой набор клиентов:
class CustomerViewSet(viewsets.ModelViewSet):
"""Handle creating reading and updating Users in system"""
serializer_class = serializers.CustomerSerializer
queryset = models.Customer.objects.filter()
permission_classes = (permissions.UpdateCustomerProfile,)
Но я получаю сообщение об ошибке:
«detail»: «Учетные данные для аутентификации не предоставлены».
даже если я добавлю токен в поле Авторизация заголовка.
UPDATE:
Если я добавлю authentication_classes = (TokenAuthentication,)
в мой CustomerViewSet, я получу ошибку:
"detail": "You do not have permission to perform this action."
Я в замешательстве, я хочу использовать текущую авторизацию пользователя для авторизации создания клиента. только авторизованный пользователь может создать свой профиль клиента
Как я могу это исправить?