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

  • 相关阅读:
    IOS 作业项目(1) 关灯游戏 (百行代码搞定)
    Object-C 基础笔记5---Category
    Object -c基础知识(5)--release 之后 retainCount为何为1
    Foundation--NSString , array and Dictionary
    Foundation--结构体
    Object-C 基础笔记4---ARC内存管理
    141. Linked List Cycle
    139. Word Break
    138. Copy List with Random Pointer
    133. Clone Graph
  • 原文地址:https://www.cnblogs.com/zhongyehai/p/11931272.html
Copyright © 2011-2022 走看看