zoukankan      html  css  js  c++  java
  • 一百零八:CMS系统之封装权限判断功能

    在用户模型下定义属性和方法,用于判断用户的权限

    @property
    def permissions(self):
    """ 返回用户拥有的所有权限 """
    if not self.roles: # 判断用户是否绑定角色
    return 0
    all_permissions = 0
    for role in self.roles:
    all_permissions |= role.permissions # 把权限加起来
    return all_permissions

    def has_permission(self, permission):
    """ 判断用户是否拥有指定权限 """
    return self.permissions & permission == permission

    @property
    def is_dveloper(self):
    """ 判断是否为开发者权限 """
    return self.has_permission(CMSPersmission.ALL_PERMISSION)

    写个测试脚本,测试一下,当前应该所有用户均没有所有权限

    @manager.command
    def test_permission():
    user = CMSUser.query.first()
    if user.has_permission(CMSPermission.VISITOR):
    print('此用户有访问者权限')
    else:
    print('此用户无访问者权限')

    给用户分配角色

    @manager.option('-e', '--email', dest='email')
    @manager.option('-n', '--name', dest='name')
    def add_user_to_role(email, name):
    user = CMSUser.query.filter_by(email=email).first()
    if user:
    role = CMSRole.query.filter_by(name=name).first()
    if role:
    role.users.append(user)
    db.session.commit()
    print('用户角色绑定成功')
    else:
    print(f'权限{role}不存在')
    else:
    print(f'邮箱{email}不存在')

    python manager.py add_user_to_role -e 122@qq.com -n 访问者

    再用命令行查看权限:python manager.py test_permission

  • 相关阅读:
    06-图2 Saving James Bond
    06-图3 六度空间 (30 分)
    07-图5 Saving James Bond
    09-排序3 Insertion or Heap Sort (25 分)
    09-排序2 Insert or Merge (25 分)
    10-排序4 统计工龄 (20 分)
    10-排序5 PAT Judge (25 分)
    使用正则表达式验证汉字输入
    使用正则表达式验证字母
    使用正则表达式对字符串进行拆分
  • 原文地址:https://www.cnblogs.com/zhongyehai/p/11931272.html
Copyright © 2011-2022 走看看