У меня есть ситуация, когда разрешается доступ к интерфейсам администратора для трех типов пользователей: - Администратор - Супервизор - Агент
Это иерархическая ситуация, администратор один (суперпользователь) и создает супервизоров, а супервизоры создают агентов.
Все они могут войти в систему администратора django с разными полномочиями.
Вход в систему управляется django.contrib.auth с моделью по умолчанию auth_user (.
from django.contrib.auth.models import User
class Supervisor(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
e_mail = models.EmailField(max_length=60, db_column='E-Mail',blank=True)
...other fields....
class Admin(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
e_mail = models.EmailField(max_length=60, db_column='E-Mail',blank=True)
...other fields...
Но есть проблема. Если я разрешаю супервизору создать агента, это означает, что я должен добавить авторизацию в ADD и ИЗМЕНИТЬ таблицу USER. И это опасно, любые супервизоры могут статьсуперпользователь, удаление пользователей и т. д. и т. д. *
Как я могу решить эту проблему? Можно ли разрешить супервизору создавать агента, без которого он может быть опасным ??
Спасибо
РЕДАКТИРОВАТЬ
У меня есть сомнения ... в models.py во время определения класса я написал этот метод:
def save(self):
self.user.is_staff = True
self.user.save()
super(Agent, self).save()
IЯва, метод EJB это был транзакционный / атомарный (фиксация автоматическая) ... В django я должен вызвать метод save ().
Это вопрос, отличный от предыдущего .....