Прикрепление дополнительных данных к объекту запроса Django Rest (DRF) только при входе пользователя в систему
У меня есть модель Branch, которая содержит все филиалы, в которые может входить пользователь. Другая модель UserBranchRelation, которая содержит связь пользователя с конкретной ветвью.
конкретную роль внутри конкретной ветви . Пользователи-администраторы имеют больше прав по сравнению с простыми членами.
Более того, пользователь может быть администратором в одной ветке и членом в другой.
Я пытаюсь придумать изящное решение, которое позволило бы мне прикрепить ветвь и роль пользователя к объекту request при login. Теперь при получении аутентифицированного запроса мне не нужно будет повторно извлекать ветку, так как она уже будет присоединена к объекту запроса при успешном входе.
Внутри моих представлений я бы использовал разрешения для возврата данных на основе филиала пользователя и ограничивал доступ на основе роли.
Вот мои модели.
# Branch Model
class Branch(models.Model):
id = models.UUIDField(primary_key=True, default=uuid4, editable=False)
name = models.CharField(max_length=255)
# User and Branch relationship
class UserBranchRelation(models.Model):
id = models.UUIDField(primary_key=True, default=uuid4, editable=False)
user = models.ForeignKey(User, on_delete=models.CASCADE)
branch = models.ForeignKey(Branch, on_delete=models.CASCADE)
role = models.CharField(
max_length=20, choices=RoleChoices.choices, default=RoleChoices.MEMBER
)