9-----BBS论坛
BBS论坛(九)
9.1.权限和角色模型定义
(1)cms/models
class CMSPermission(object):
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=CMSPermission.VISITOR)
users = db.relationship('CMSUser',secondary=cms_role_user,backref='roles')
生成到数据库
python manage.py db migrate python manage.py db upgrade
(2)manage.py
CMSRole = cms_models.CMSRole
CMSPermission = cms_models.CMSPermission @manager.command
def create_role():
# 1.访问者(可以修改个人信息)
visitor = CMSRole(name='访问者',desc='只能访问数据,不能修改')
visitor.permissions = CMSPermission.VISITOR # 2.运营人员(修改个人信息,管理帖子,管理评论,管理前台用户)
operator = CMSRole(name='运营',desc='管理帖子,管理评论,管理前台用户,')
operator.permissions = CMSPermission.VISITOR|CMSPermission.POSTER\
|CMSPermission.COMMENTER|CMSPermission.FRONTUSER # 3.管理员(拥有所有权限)
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 manage.py create_role
9.2.封装权限判断功能
(1)cms/models.py
class CMSUser(db.Model): #....... @property
def permissions(self):
#用户拥有的权限
if not self.roles:
return 0
all_permissions = 0
#用户所有的角色
for role in self.roles:
#取出用户所有角色的所有权限
permissions = role.permissions
#把所有权限通过“|=”整合到all_permissions
all_permissions |= permissions
return all_permissions def has_permission(self,permission):
# 判断用户是否有‘xxx’权限
#通过与操作,判断用户是否有‘permission’;得到的结果相等返回true,不相等返回false
return self.permissions&permission == permission @property
def is_developer(self):
#判断是不是开发者
return self.has_permission(CMSPermission.ALL_PERMISSION)
(2)manage.py
@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("没有这个角色:%s" %role)
else:
print("%s邮箱没有这个用户!"%email) @manager.command
def test_permission():
'''测试用户是否有xxx权限'''
user = CMSUser.query.first()
if user.has_permission(CMSPermission.VISITOR):
print("这个用户有访问者权限")
else:
print("这个用户没有访问者权限")
(3)cms终端把用户添加到角色
#添加用户到角色
python manage.py add_user_to_role -e 1184405959@qq.com -n 访问者 #测试
python manage.py test_permission
- 9.1.权限和角色模型定义
- 9.2.封装权限判断功能
9-----BBS论坛的更多相关文章
- Python之路【第十八篇】Django小项目简单BBS论坛部分内容知识点
开发一个简单的BBS论坛 项目需求: 整体参考“抽屉新热榜” + “虎嗅网” 实现不同论坛版块 帖子列表展示 帖子评论数.点赞数展示 在线用户展示 允许登录用户发贴.评论.点赞 允许上传文件 帖子可被 ...
- python 学习笔记二十 django项目bbs论坛
项目:开发一个简单的BBS论坛 需求: 整体参考“抽屉新热榜” + “虎嗅网” 实现不同论坛版块 帖子列表展示 帖子评论数.点赞数展示 在线用户展示 允许登录用户发贴.评论.点赞 允许上传文件 帖子可 ...
- Python之路,Day17 - 分分钟做个BBS论坛
Python之路,Day17 - 分分钟做个BBS论坛 本节内容: 项目:开发一个简单的BBS论坛 需求: 整体参考"抽屉新热榜" + "虎嗅网" 实现不同 ...
- python第一百三十天 ---简单的BBS论坛
简单的BBS论坛 实现功能 git仓库地址:https://github.com/uge3/BBS 1.整体参考“抽屉新热榜” + “博客园” 2.实现不同论坛版块 3.帖子列表展示 4.个人博客主页 ...
- Django小项目简单BBS论坛
开发一个简单的BBS论坛 项目需求: 1 整体参考"抽屉新热榜" + "虎嗅网" 2 实现不同论坛版块 3 帖子列表展示 4 帖子评论数.点赞数展示 5 在线用 ...
- Python开发一个简单的BBS论坛
项目:开发一个简单的BBS论坛 需求: 整体参考“抽屉新热榜” + “虎嗅网” 实现不同论坛版块 帖子列表展示 帖子评论数.点赞数展示 在线用户展示 允许登录用户发贴.评论.点赞 允许上传文件 帖子可 ...
- bbs论坛浏览器兼容性问题
一直都是在chrome上进行调试,今天终于把bbs论坛这个项目搭建完了,进入IE.Firefox看了看 吓哭了!!! 火狐 Edge chrome 特别是加了<!DOCTYPE html> ...
- 开源BBS论坛软件推荐
七款开源BBS论坛软件推荐(1) 本文介绍了七个开源的BBS论坛软件(在英文界一般叫做Forum).可能国内的朋友们比较熟悉Discuz!和PHPwind,但其实我们的选择还是很多的,而且下面介绍的这 ...
- LNMP环境搭建BBS论坛及伪静态
我们在mysql备份 LNMP环境中的数据库迁移为独立的服务器的基础上搭建BBS论坛: [root@bqh-117 ~]# mysql -uroot -p123456 Welcome to the ...
- Django项目 BBS论坛
BBS论坛 一.项目表分析 二.自定义form组件 三.注册功能 四.BBS论坛 登录功能
随机推荐
- Gstreamer编程
一.简介 GStreamer是一个开源的多媒体框架库.利用它,可以构建一系列的媒体处理模块,包括从简单的ogg播放功能到复杂的音频(混音)和视频(非线性编辑)的处理.应用程序可以透明的利用解码和过滤技 ...
- yii2常用excel操作库
yii2使用较多的excel操作库 1."phpoffice/phpexcel" https://github.com/PHPOffice/PHPExcel/archive/1.8 ...
- Java进程与多线程+线程中的join、yield、wait等方法+synchronized同步锁使用
首先了解什么是多线程与进程 进程:是一个执行过程,动态的概念 --->会分配内存线程:是进程的一个单元,线程是系统最小的执行单元 详解: http://blog.csdn.net/luoweif ...
- tomcat8.0的下载安装配置
配置tomcat前要先配置JDK的环境变量 具体方法请点链接JDK环境变量配置 首先要 到官网下载tomcat tomcat官网 进入官网后 如图在左侧选择自己想要下载的版本,这里我以8.0版本为例 ...
- vue 之 指令系统介绍
浏览目录 条件渲染 class 与style绑定 事件处理 指令系统介绍 所谓指令系统,大家可以联想咱们的cmd命令行工具,只要我输入一条正确的指令,系统就开始干活了. 在vue中,指令系统,设置一些 ...
- SDUT 3375 数据结构实验之查找三:树的种类统计
数据结构实验之查找三:树的种类统计 Time Limit: 400MS Memory Limit: 65536KB Submit Statistic Problem Description 随着卫星成 ...
- C++笔记--函数
函数的定义和声明 函数的声明和定义都必须描述相同的类型,但是声明可以不写参数名,定义则必须写参数名,但是他们的参数名字可以不同. 一个局部变量被声明为static,那么这个局部变量将只会被初始化一次, ...
- 1506-122 (S) Expecting pointer to struct or union.
__你们 大胆 猜 是什么错.. __ 很尴尬的错误..就是 结构体指针. ___只有结构体 指针 可以用 -> 这个符号哦.. 所以 你只要 将 -> 改成 . , 就 ...
- HTML完全使用详解 PDF扫描版
<HTML完全使用详解>根据网页制作的实际特点和目前市场需要,全面系统地介绍了最新的HTML4.01.丰富的实例贯穿全书,能帮助您全面掌握HTML,而且本书所有实例均可直接修改使用,可以提 ...
- .net core 基于NPOI 的excel导入导出类,支持自定义导出哪些字段,和判断导入是否有失败的记录
#region 从Excel导入 //用法 //var cellHeader = new Dictionary<string, string>(); //cellHeader.Add(&q ...