caravel 控制某角色只能看到自己的表
来源:互联网 发布:纵向科研经费知乎 编辑:程序博客网 时间:2024/05/16 08:59
背景:
每个用户应该只能看到自己有权限的表,但是我拿到这个版本的时候 caravel还没做限制,即用户可以看到所有表。
然后我就用自己的方法 限制了,如下:
#views.pyclass FilterTables(CaravelFilter): def apply(self, query, func): # noqa if any([r.name in ('Admin', 'Alpha') for r in get_user_roles()]): return query sql=""" select * from ab_view_menu where id in (select view_menu_id from ab_permission_view where id in (select permission_view_id from ab_permission_view_role where role_id=5) and permission_id=31 ) """ logging.info(sql) result=db.session.execute(sql) idsinfo=result.fetchall() ids=[] for item in idsinfo: ids.append(item[1].split(':')[1].split(')')[0]) qry = query.filter(self.model.id.in_(ids)) return qry
增加了一个内部类之后,调用:
#views TableModelView 代码段中调用 base_filters = [['id', FilterTables, lambda: []]] #post_add(self, table)函数前
当当当当,完毕。
回到GitHub上看了一眼,呀,版本升级,已经实现了呀。
看了下代码,人家风格更统一呢,
你看人家是这样写的:
#views.pyclass TableSlice(CaravelFilter): def apply(self, query, func): # noqa if any([r.name in ('Admin', 'Alpha') for r in get_user_roles()]): return query perms = self.get_perms() tables = [] for perm in perms: match = re.search(r'\(id:(\d+)\)', perm) tables.append(match.group(1)) qry = query.filter(self.model.id.in_(tables)) return qry#views.py 调用 base_filters = [['id', TableSlice, lambda: []]]
都可以哦~ 你可以自己看情况来。
0 0
- caravel 控制某角色只能看到自己的表
- 为什么人往往只能看到自己愿意相信的真相
- 让WordPress作者后台只能看到自己的日志
- 使SQL用户只能看到自己拥有权限的库
- 使SQL用户只能看到自己拥有权限的库
- 角色管理(只能看到当前账号权限树)
- ser_source 数据字典的试图,每个用户只能看到自己的user_source。
- 如何让SQL用户只能看到自己拥有权限的库
- SQL Server 2008等登录用户只能看到自己的数据库设置办法
- Sqlserver中 登录用户只能看到自己拥有权限的库
- Sqlserver中 登录用户只能看到自己拥有权限的库
- SQL Server 2008等登录用户只能看到自己的数据库设置办法
- odoo8.0【行级别权限】 变相实现员工只能看到归属自己的单据
- 创建只能看到自己有权限库的登录名和用户
- 看到自己的进步
- 自己的角色
- 做好自己的角色
- 人总是看到自己想看到的
- sqlite3 near"?":syntax error 问题解决办法
- 使用maven创建java web项目+SpringMVC+Mybatis
- 厉害了!Word云存储
- NS2简介
- 蓝桥——数星星
- caravel 控制某角色只能看到自己的表
- 横向图片滚动播放
- 函数定义,调用,参数,返回值
- Which should I learn: Mithril, Vue, or Angular?
- Xcode 8 KeychainItemWrapper 'Couldn't add the Keychain Item.'
- 一般情况的界面搭建和数据的填充
- web安全——ClickJacking
- .net 验证码同步实现代码
- Python正则表达式指详细讲解