@PreFireSkills

Как в Django ограничить доступ пользователя только к своим объектам?

Добрый вечер!
У меня ситуация в который любой авторизованный пользователь может удалять и редактировать посты созданным любым другим пользователем,если он знает id этого поста. Как в Django создать ограничения, которое бы создавало условие при котором пользователь может редактировать и удалять только посты,которые он создал сам.?
  • Вопрос задан
  • 944 просмотра
Решения вопроса 1
deepblack
@deepblack
Добавь в модель поле owner или created_by например,
при сохранении обьекта, заполняй это поле ссылкой(ForeignKey) на текущего юзера.

При редактировании проверяй во вьюхе что текущий пользователь является владельцем (создателем) данного обьекта. Если не является, то опционально выводи предупреждение\ошибку доступа и\или переадресуй его на другую страницу (на главную, например).

Ну и логично в дополнение к вышеперечисленному сделать страницу со списком созданных постов, и только на них выводить ссылку на редактирование.

План действий я обрисовал, конкретную реализацию делай сам (гугли примеры)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@akonovalov
Программист на компьютере
Если бы вы использовали Django Rest Framework (aka "DRF"), то там есть "из коробки" права и роли.
Но если вам вдруг почему-то не подходит DRF, настоятельно рекомендую ознакомиться с идеологией RBAC
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы