【问题标题】:Django: Restrict staff user to give more permissions to a group than his ownDjango:限制员工用户向组授予比他自己更多的权限
【发布时间】:2019-04-04 11:06:38
【问题描述】:

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

有一个超级用户可以访问所有数据并进行修改。很少有员工用户,他们的访问权限有限,主要是查看但可以添加新用户和组。

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

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

我怎样才能只显示员工用户自己拥有的权限而不显示完整的选项?

我正在使用 Django 2.1

【问题讨论】:

    标签: django


    【解决方案1】:

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

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

    这样用户就无法获得额外的权限

    【讨论】:

      猜你喜欢
      • 2012-02-25
      • 2021-12-24
      • 2015-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多