赞
踩
Superset是Airbnb开源的一款BI产品,Apache开源项目,支持多种数据库连接,拥有丰富的图表类型,其部署方便,制作看板迅速,能够款速方便的实现数据分析和可视化,是个人和小企业自助BI的不错选择。
最近接到客户需求,需要根据不同的角色,赋予不同的看板使用权限,比如,Admin用户需要在任何时候都能探索,编辑,和下载图表。目测了一下,Superset原生的好像并没有这个权限的定义。只好自己研究一下添加以上的权限:
1. Superset的权限系统
Superset控制权限主要依靠用户(user),角色(role),权限(permissions),视图(view_menu) 四个类来实现。
他们对应的关系如下:
一个用户对应多个角色,一个角色对应多个用户
一个角色对应多个permission_view, 一个permission_view对应多个角色
一个permission 对应多个 view menu, 一个view_menu对应多个permission
简单的说,就是permission 和view_menus是多对多的关系,然后每一条多对多的关系即为一条权限记录(permission_view_menu), 这个permission_view_menu和role又是多对多的关系。
一个角色包含一个权限记录,该角色下面的所有用户即拥有该权限。
2. 如何添加一条权限信息
def create_role_permission_view_menu(role_name, pv): """ general method to create permission ,view menu, and add perms into role :param role_name: str, role name :param pv: dict, key is permission_name, value is view_menu_name e.g. :return: """ for permission_name, view_menu_name in pvs.items(): merge_perm(sm, permission_name, view_menu_name) role = sm.find_role(role_name) perm_view = sm.find_permission_view_menu(permission_name, view_menu_name) sm.add_permission_role(role, perm_view)role_name = "Admin"permission_view_menu = { 'can_edit_chart': "chart
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。