Django:限制工作人员向该组授予的权限要大于其自己的权限

时间:2019-04-04 11:06:39

标签: django

我创建了一个具有多种类型用户的Django应用。

有一个超级用户可以访问所有数据并进行修改。很少有员工用户,这些用户具有有限的访问权限,但大多数用户只能查看,但是可以添加新用户和组。

以下是职员用户的组权限。他可以添加新组,但不能更改,查看或删除现有组。

enter image description here

但是,当我尝试创建一个新组时,即使他本人没有这些权限,他也可以将所有可能的权限分配给该新组。下面是他在创建新群组时可以看到的视图。

enter image description here

我如何只显示工作人员本人所拥有的那些权限,而不显示完整的选项?

我正在使用 Django 2.1

1 个答案:

答案 0 :(得分:0)

这对我有用: 创建具有各种权限的组 禁止添加或删除组


    #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)

这样,用户将无法获得其他权限