Проверка пользовательских разрешений Django из react

Я впервые создаю проект с Django в бэкенде и React frontend. У меня есть пользовательская модель пользователя с булевыми полями is_moderator & is_admin & is_poster. Во фронтенде есть определенная кнопка, которая должна быть видна только администраторам и модераторам. Поэтому мой вопрос в том, как сделать так, чтобы эта кнопка была видна только им, я сделал пользовательское разрешение Django таким образом

class IsModerator(permissions.BasePermission):
    def has_permission(self, request, view):
        if request.user.is_authenticated:
            return True

    def has_object_permission(self, request, view, obj):
        if request.user.is_moderator:
            return True 
        if request.user.is_admin:
            return True 
        return False

и добавьте его в представление. В этом случае она доступна для всех типов пользователей, поэтому, когда обычные пользователи, кроме модераторов и администраторов, нажимают на кнопку, она отображает ошибку в консоли, чтобы избежать этой ошибки, я сделал условие в компоненте react, проверяющее, если пользователь вошел в систему и является администратором или модератором, то отображает кнопку, иначе не отображает ее, но по этому условию нет смысла в пользовательском разрешении.

Есть ли лучший способ достичь этого?

Я бы сказал, что вы должны проверять разрешения как во фронтенде, так и в бэкенде. Если вы не проверяете разрешения в бэкенде и просто скрываете кнопку, то пользователь все равно может отправить ручной запрос к этой конечной точке и получить данные, к которым у него не должно быть доступа.

По-моему, вы сделали это в хорошем смысле этого слова.

PS. С вашим текущим классом разрешений IsModerator пользователи, которые НЕ являются модами или администраторами, все еще будут иметь доступ к действиям в вашем представлении, которые не являются уровнем объекта, т.е. list, create,

Вернуться на верх