Работя върху приложение на трета страна, работещо с django 2.2.12.
Имам администратор с 3 вида потребители: "superadmin", "personal" и "other".
Когато съм влязъл като "superadmin", когато отида в списъка с потребители и щракна върху потребител, мога да го редактирам и да нулирам паролата му.
Въпреки това, когато се опитам да направя същото като потребител от „персонал“, мога да видя потребителските данни, но не мога да редактирам нищо и няма опция за повторно задаване на паролата. Ако се опитам да осъществя достъп до 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/ и все още не можах да разбера това.
Благодаря