模型与权限关系映射表

class CMSPersmission:
""" 权限管理映射 """
# 255的二进制方式来表示 1111 1111
ALL_PERMISSION = 0b11111111
# 1. 访问者权限
VISITOR = 0b00000001
# 2. 管理帖子权限
POSTER = 0b00000010
# 3. 管理评论的权限
COMMENTER = 0b00000100
# 4. 管理板块的权限
BOARDER = 0b00001000
# 5. 管理前台用户的权限
FRONTUSER = 0b00010000
# 6. 管理后台用户的权限
CMSUSER = 0b00100000
# 7. 管理后台管理员的权限
ADMINER = 0b01000000 # 用户与权限的中间表
cms_role_user = db.Table(
'cms_role_user',
db.Column('cms_role_id', db.Integer, db.ForeignKey('cms_role.id'), primary_key=True),
db.Column('cms_user_id', db.Integer, db.ForeignKey('cms_user.id'), primary_key=True)
) class CMSRole(db.Model):
__tablename__ = 'cms_role'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(50), nullable=False)
desc = db.Column(db.String(200), nullable=True)
create_time = db.Column(db.DateTime, default=datetime.now)
permissions = db.Column(db.Integer, default=CMSPersmission.VISITOR)
users = db.relationship('CMSUser', secondary=cms_role_user, backref='roles')

执行数据库脚本迁移

python manager.py db migrate
python manager.py db upgrade

定义角色

@manager.command
def create_role():
""" 创建不同权限的角色 """
# 1.访问者(可以修改个人信息)
visitor = CMSRole(name='访问者', desc='只能看相关数据,不能修改')
visitor.permissions = CMSPermission.VISITOR # 2.运营角色(修改个人信息、管理帖子、管理评论、管理前台用户)
# 0b00000001|0b00000010|0b00100000|0b00000100 = 0b00010111
operator = CMSRole(name='运营', desc='管理帖子、评论、前台用户')
operator.permissions = CMSPermission.VISITOR | CMSPermission.POSTER | CMSPermission.CMSUSER | CMSPermission.COMMENTER | CMSPermission.FRONTUSER # 3.管理员(拥有绝大部分权限,不含同级别的权限)
# 0b00000001|0b00000010|0b00100000|0b00000100|0b00001000 = 0b00011111
admin = CMSRole(name='管理员', desc='拥有本系统所有权限')
admin.permissions = CMSPermission.VISITOR | CMSPermission.POSTER | CMSPermission.CMSUSER | CMSPermission.COMMENTER | CMSPermission.FRONTUSER | CMSPermission.BOARDER # 4.开发者(所有权限)
developer = CMSRole(name='开发者', desc='开发人员专用角色')
developer.permissions = CMSPermission.ALL_PERMISSION
db.session.add_all([visitor, operator, admin, developer])
db.session.commit()

命令行执行:python manager.py create_role

最新文章

  1. TypeScript 素描 - 接口
  2. [.net 面向对象程序设计进阶] (19) 异步(Asynchronous) 使用异步创建快速响应和可伸缩性的应用程序
  3. 浅谈Android Fragment嵌套使用存在的一些BUG以及解决方法
  4. u3d动态加入模型
  5. Greedy:Fence Repair(POJ 3252)
  6. 《Play for Java》学习笔记(七)数据类型解析——Body parser
  7. JavaScript入门(5)
  8. Java反射举例
  9. 使用MySQL处理百万级以上数据时,不得不知道的几个常识
  10. 学习笔记——门面模式Facade
  11. Oracle DB 总结(SQL)
  12. Git使用八:创建和切换分支
  13. AndroidStudio_TextView
  14. Spark以yarn-client提交任务时报错超时,Connection to 192.168.. /has been quiet forms while there are outstanding requests. Failed to send RPC.....
  15. 启动服务报错:nested exception is java.lang.NoSuchMethodError: org.apache.cxf.common.jaxb.JAXBUtils.closeUnmarshaller(Ljavax/xml/bind/Unmarshaller;)V
  16. AngularJS实战之ng-repeat的详细用法
  17. [mBean]-Delphi框架,回归简单,自然。
  18. WWDC: Thread Sanitizer and Static Analysis
  19. xmlns 与 targetNamespace 的解释
  20. 第一个DirectX程序include、lib设置问题

热门文章

  1. 前端使用 node-gyp 构建 Native Addon
  2. [Abp vNext微服务实践] - 服务通讯
  3. Golang对方法接收者变量的自动“取引用”和“解引用”
  4. 《黑白团团》第九次团队作业:Beta冲刺与验收准备
  5. 服务器上的UID按钮
  6. AGC刷题记
  7. js实现QQ跳转到支付宝APP并领取红包!附:动图demo
  8. python常用函数拾零
  9. [暂停维护]基于8211lib库对s57电子海图的解析和存储
  10. 部署lnmp