16-crm项目-kingadmin,权限管理

权限管理

怎么实现权限的管理呢?

首先是model,这个表继承了权限类,

class UserProfile(AbstractBaseUser, PermissionsMixin):
    '''账号表'''
    email = models.EmailField(
        verbose_name='email address',
        max_length=255,
        unique=True,
        null=True
    )
    password = models.CharField(_('password'), max_length=128,
                                help_text=mark_safe('''<a href='password/'>修改密码</a>'''))
    name = models.CharField(max_length=32)
    is_active = models.BooleanField(default=True)
    is_admin = models.BooleanField(default=False)
    roles = models.ManyToManyField("Role", blank=True)
    objects = UserProfileManager()

    stu_account = models.ForeignKey("Customer", verbose_name="关联学员账号", blank=True, null=True,
                                    help_text="只有学员报名后方可为其创建账号")
    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['name']

    def get_full_name(self):
        # The user is identified by their email address
        return self.email

    def get_short_name(self):
        # The user is identified by their email address
        return self.email

    def __str__(self):  # __unicode__ on Python 2
        return self.email

    # def has_perm(self, perm, obj=None):
    #     "Does the user have a specific permission?"
    #     # Simplest possible answer: Yes, always
    #     return True
    #
    # def has_module_perms(self, app_label):
    #     "Does the user have permissions to view the app `app_label`?"
    #     # Simplest possible answer: Yes, always
    #     return True

    @property
    def is_staff(self):
        "Is the user a member of staff?"
        # Simplest possible answer: All admins are staff
        return self.is_active

    class Meta:
        permissions = (('can_fuck_him_to_death', '弄死小虎逼'),
                       ('can_access_my_course', '可以访问我的课程'),
                       ('can_access_customer_list', '可以访问客户列表'),
                       ('can_access_customer_detail', '可以访问客户详细'),
                       ('can_access_studyrecords', '可以访问学习记录页面'),
                       ('can_access_homework_detail', '可以访问作业详情页面'),
                       ('can_upload_homework', '可以交作业'),
                       ('access_kingadmin_table_obj_detail', '可以访问kingadmin每个表的对象'),
                       ('change_kingadmin_table_obj_detail', '可以修改kingadmin每个表的对象'),
                       )

 

继承了权限类之后,

需要进行一次数据库的迁移,这样会增加两个字段,一个权限,一个组,

 

 

自己写的admin

class UserProfileAdmin(BaseAdmin):
    list_display = ('email','name')
    readonly_fields = ('password',)
    modelform_exclude_fields = ["last_login",]
    filter_horizontal = ("user_permissions","groups")

 

posted @ 2020-09-25 18:31  技术改变命运Andy  阅读(115)  评论(0编辑  收藏  举报