Разрешения от 2-х проектов django объединены. Как их разделить? - PullRequest
0 голосов
/ 24 октября 2019

Доброго времени суток всем) Я создал пользовательскую модель с пользовательскими разрешениями. У меня есть несколько проектов, и их разрешения объединены в одну таблицу ('auth_permission'). Можно ли как-то настроить саму таблицу для этих разрешений для отдельных проектов? (Например, db_table = '"schema"."table"' для моделей.). Google не дал ответов.

class TestUser(AbstractUser):
phone = PhoneNumberField(null=False, blank=False, unique=True)
email = CharField(unique=True, max_length=35, null=False, blank=False)

class Meta:
    db_table = '"fyzzys"."users"'
    permissions = [
        ("can_see_payments", "payments"),
        ("can_see_analytics", "analytics"),
    ]

UPD: Вот скриншот, который показываетразрешения двух совершенно разных проектов одновременно из админ-панели.

enter image description here

1 Ответ

0 голосов
/ 24 октября 2019

Чтобы предоставить пользователю права доступа, вы захотите добавить PermissionsMixin к модели User следующим образом.

class TestUser(AbstractBaseUser, PermissionsMixin):

Если вы используете AbstractUser, вы на самом деле уже наследуете PermissionsMixin.

Разрешение mixin является моделью в django.contrib.auth.models. Он добавляет к пользовательской модели следующие поля (столбцы в пользовательской таблице);is_superuser, groups, user_permissions. Смесь разрешений позволяет вам добавлять (и удалять) 0 .. * (много) индивидуальных или групповых разрешений для пользователя .

Чтобы добавить разрешения для пользователя, вы можете затем использовать.

from django.contrib.auth.models import Permission

# The permission needs to exist first.
permission = Permission.objects.get(name='Can view poll')
u.user_permissions.add(permission)

Код для django.contrib.auth.models.permissionsmixin можно найти по ссылке.

...