Джанго: Ограничить штатного пользователя, чтобы дать больше разрешений для группы, чем его собственный - PullRequest
0 голосов
/ 04 апреля 2019

Я создал приложение Django с несколькими типами пользователей.

Есть один суперпользователь, который может получить доступ ко всем данным и выполнить модификации. Есть несколько сотрудников, которые имеют ограниченный доступ, в основном для просмотра, но могут добавлять новых пользователей и группы.

Ниже приведено разрешение группы для штатного пользователя. Он может добавить новую группу, но не может изменить, просмотреть или удалить существующую.

enter image description here

Но когда я пытаюсь создать новую группу, он может назначить все возможные разрешения новой группе, даже если он сам не имеет этих разрешений. Ниже представлен вид, который он видит при создании новой группы.

enter image description here

Как я могу показать только те разрешения, которые есть у самого пользователя, а не показать полные опции?

Я использую Django 2.1

1 Ответ

0 голосов
/ 07 апреля 2019

Это сработало для меня: создание групп с различными разрешениями Запрет на добавление или удаление групп


    #other imports
    from django.contrib.auth.models import User
    from django.contrib.auth.admin import UserAdmin as BaseUserAdmin

    class UserAdmin(BaseUserAdmin):
        list_display = ('username', 'email', 'is_staff')
        list_filter = ('is_staff',)
        #this displays after initial user creation for additional information
        fieldsets = (
        (None, {'fields': ('username', 'email', 'password')}),
        ('Personal info', {'fields': ('first_name',)}),
        ('Permissions', {'fields': ('is_staff', 'is_active', 'groups')}),
        )
        # add_fieldsets is not a standard ModelAdmin attribute. UserAdmin
        # overrides get_fieldsets to use this attribute when creating a user.
        add_fieldsets = (
        (None, {
        'classes': ('wide',),
        'fields': ('username', 'email', 'password1', 'password2')}
        ),
        )
        search_fields = ('username',)
        ordering = ('username',)

    #unregister the default user admin
    admin.site.unregister(User)
    # Now register the new UserAdmin...
    admin.site.register(User, UserAdmin)

Таким образом, пользователь не может получить дополнительные разрешения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...