Я работаю над сторонним приложением, работающим под управлением django 2.2.12.
У меня есть администратор с тремя типами пользователей: «суперадмин», «персонал» и «другие».
Когда я вхожу в систему как «суперадмин», когда я перехожу к списку пользователей и нажимаю на пользователя, я могу редактировать их и сбрасывать их пароль.
Однако, когда я пытаюсь сделать то же самое в качестве «штатного» пользователя, я вижу данные пользователя, но не могу ничего редактировать, и нет возможности сбросить пароль. Если я попытаюсь получить доступ к URL-адресу вручную (/admin/accounts/user/[USER_ID]/password/
), я получу сообщение об ошибке «403 Forbidden».
Я заметил, что если я переопределяю метод has_perm
в пользовательской модели, он позволяет «штатному» пользователю редактировать пользовательские данные. Однако я хотел бы разрешить только изменение пароля (если пользователь не является суперадминистратором или штатным пользователем), не позволяя «штатным» пользователям редактировать других пользователей.
def has_perm(self, perm, obj=None):
return True
У меня сложилось впечатление, что это связано с системой разрешений Django, но я перечитал документы по адресу https://docs.djangoproject.com/en/2.2/topics/auth/default/ и еще не мог понять это.
Спасибо