一百零七:CMS系统之权限和角色模型定义

模型与权限关系映射表


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


一百零七:CMS系统之权限和角色模型定义的更多相关文章
- salesforce零基础学习(一百零七)Dynamic Action
说一下项目中常见的甲方的需求.背景如下:Order在SF端生成以后,在status为completed以后,需要点击按钮同步到SAP或者其他的MDM,客户希望的是,如果 order的状态为 compl ...
- Java开发笔记(一百零七)URL地址的组成格式
URL的全称是Uniform Resource Locator,意思是统一资源定位符,俗称网络地址或网址.网络上的每个文件及接口,都有对应的URL网址,它规定了其他设备如何通过一系列的路径找到自己,犹 ...
- 测开之路一百零七:bootstrap排版
引入bootstrap和jquery 标题 对齐 正文强调 引言 <!DOCTYPE html><html lang="en"><head> & ...
- 一百零七、SAP的OO-ALV之一,新建程序
一.来带SE38模块,新建一个Z_TIANPAN_20190807_OOALV的本地程序 二.设置一个标题,点击对勾 三.选择保存为本地对象 我们下一篇来写创建屏幕
- 零开始:NetCore项目权限管理系统:定义基本接口和实现
上一篇讲了基础的框架搭建 地址:http://www.cnblogs.com/fuyu-blog/p/8909779.html 这篇主要讲解SqlSugar ORM的数据库连接以及建表和接口 ...
- Laravel系列之CMS系统学习 — 角色、权限配置【2】
一.RBAC分析 基于角色的权限访问控制(Role-Based Access Control),这里存在这么几个玩意儿:角色.权限,用户 表:roles.permissions.role_has_pe ...
- CMS系统简介(从简介到使用)
CMS系统简介 1.简介 CMS是Content Management System的缩写,意为"内容管理系统". 在中国互联网的发展历程中,一直以来默默地为中国站长提供动力的CM ...
- 从零单排Linux – 2 – 目录权限
从零单排Linux – 2 – 目录权限 1.sync 讲内存数据跟新到硬盘中 2.执行等级init a: run level 0:关机 b: run level 3:纯命令模式 c:run leve ...
- 基于jeesite的cms系统(一):开发环境搭建
基于jeesite的cms系统系列,是对基于jeesite进行二次开发的博客模块开发过程的总结.涉及入门安装,二次开发,部署等 一.概况: JeeSite 是一个 Java 企业级快速开发平台,基于经 ...
随机推荐
- JS中call()和apply()以及bind()的区别
一.方法定义: apply:调用一个对象的一个方法,用另一个对象替换当前对象.例如:B.apply(A, arguments);即A对象应用B对象的方法. call:调用一个对象的一个方法,用另一个对 ...
- anaconda环境中---py2.7下安装tf1.0 + py3.5下安装tf1.5
anaconda环境中---py2.7下安装tf1.0 + py3.5下安装tf1.5 @wp20181030 环境:ubuntu18.04, anaconda2, ubuntu系统下事先安装了pyt ...
- Oracle数据库结构
之前写了一篇文章<Oracle-知识结构漫谈> 粗略的介绍了Oracle数据库接口,在这里再更加详细的描述一下,当做是对原有知识的巩固,温故知新. Oracle体系结构数据库的体系结构是从 ...
- 按照教程自动安装RFNoC时.在使用pip安装pybombs时出现报错,解决办法
$ sudo apt-get install git $ sudo apt-get install python-setuptools python-dev python-pip build-esse ...
- 【2-sat】8.14B. 黑心老板
2-sat 只写过板子 题目大意 有一个长度为$k$取值只有01的序列,现在$n$个人每人下注三个位置,请构造一个序列使每个人最多猜对一个位置 $k\le 5000,n \le 10000$ 题目分析 ...
- windows OpenCV 2.4.9 Python 2.7配置
1 .下载 OpenCV 2.4.9 .下载OpenCV-2.4.9,使用方便 下载地址 2. OpenCV-自解压文件,直接运行.即可解压.解压到想要的opencv文件夹里E:\Programme\ ...
- SDL 小例子
以下利用SDL播放网络流,需要自己配置运行环境,包括SDL和FFmpeg // ConsoleApplication2.cpp : 定义控制台应用程序的入口点. // /* #include &quo ...
- 和PHP相关的Linux命令
Linux服务器上怎么找到php.ini php -ini #输出一堆信息,里面有loaded configuration file => /etc/php/7.0/cli/php.ini就是了 ...
- Comet OJ - Contest #11 B 背包dp
Code: #include <bits/stdc++.h> #define N 1005 #define M 2000 #define setIO(s) freopen(s". ...
- centos 7配置静态IP,并配置DNS
注意:四 个文件 cat /etc/sysconfig/network-scripts/ifcfg-eth0 cat /etc/sysconfig/network cat /etc/resolv.co ...