权限方案¶
权限方案元素是对权限方案的封装。主要提供权限方案,角色,角色组信息的查询功能
实例化权限方案¶
本例中权限方案的配置信息如图
[2]:
from deepfos.element.rolestrategy import RoleStrategy
[3]:
rs = RoleStrategy('test_rs')
查询用户的角色和角色组¶
query_roles
查询能够查询用户所属角色,接受一个用户ID参数。当不提供参数时,默认使用当前用户。
[4]:
rs.query_roles()
[4]:
[RoleDetailVO(description={'en': 'rookie', 'zh-cn': '菜鸟'}, description1=None, description2=None, instruction={'en': 'rookie', 'zh-cn': '菜鸟'}, instruction1=None, instruction2=None, name='rookie', relation=None),
RoleDetailVO(description={'en': 'salty_fish', 'zh-cn': '咸鱼'}, description1=None, description2=None, instruction={'en': 'salty_fish', 'zh-cn': '咸鱼'}, instruction1=None, instruction2=None, name='salty_fish', relation=None)]
query_role_groups
查询能够查询用户所属角色组,用法与 query_roles
相同
[5]:
rs.query_role_groups()
[5]:
[RoleGroupDetailVO(description={'en': 'proletariat', 'zh-cn': '无产阶级'}, description1=None, description2=None, instruction={'en': 'proletariat', 'zh-cn': '无产阶级'}, instruction1=None, instruction2=None, name='proletariat', relation=None, status=1, type='GROUP')]
查询权限方案信息¶
query
方法可以查询权限方案的详细记录。
不提供参数时,同样使用当前用户查询。出了使用用户id,query方法还支持使用用户组,角色组以及角色进行查询,同时提供多个查询条件时,条件间的逻辑关系为“或”
[6]:
info = rs.query()
dimensions
属性包含权限方案关联的维度信息,顺序与权限设置界面中顺序保持一致
[7]:
info.dimensions
[7]:
[ElementDetailDto(elementName='major_version', elementType='DIM', folderId='DIR787334b7d563', path='\\DeploymentProcess\\CustomerProjectRegistration\\', serverName='dimension-server1-0'),
ElementDetailDto(elementName='DAG', elementType='DIM', folderId='0', path='\\', serverName='dimension-server1-1')]
[8]:
info.dimensions
[8]:
[ElementDetailDto(elementName='major_version', elementType='DIM', folderId='DIR787334b7d563', path='\\DeploymentProcess\\CustomerProjectRegistration\\', serverName='dimension-server1-0'),
ElementDetailDto(elementName='DAG', elementType='DIM', folderId='0', path='\\', serverName='dimension-server1-1')]
records
属性包含权限设置界面中的记录, 当前用户为 Androiddown
, 因此查询到2条记录
[9]:
len(info.records)
[9]:
2
记录信息与权限设置界面中的记录一一对应
用户信息
[10]:
info.records[1].users
[10]:
[UserDTO(adminTag=None, avatar=None, email='wei.wei@proinnova.com.cn', groupList=None, mobilePhone=None, nickName='Androiddown', status='ENABLE', userId='c3c3e8fc-a6e2-443e-9091-75c19217c92c', userName='jP5C29m6PW')]
用户组信息
[11]:
info.records[1].user_groups
[11]:
[UserGroupListDTO(groupDesc=None, groupName='用户组17', id='4b60f723-8ebe-45a4-9ef2-816078b4af7c', status='ENABLE', type=None)]
角色信息
[12]:
info.records[0].roles
[12]:
[RoleDetailVO(description={'en': 'rookie', 'zh-cn': '菜鸟'}, description1=None, description2=None, instruction={'en': 'rookie', 'zh-cn': '菜鸟'}, instruction1=None, instruction2=None, name='rookie', relation=None)]
角色组信息
[13]:
info.records[0].role_groups
[13]:
[RoleGroupDetailVO(description={'en': 'proletariat', 'zh-cn': '无产阶级'}, description1=None, description2=None, instruction={'en': 'proletariat', 'zh-cn': '无产阶级'}, instruction1=None, instruction2=None, name='proletariat', relation=None, status=1, type='GROUP')]
维度表达式信息,表达式列表与维度信息列表(
info.dimensions
)一一对应
[14]:
info.records[1].dim_expr
[14]:
['IDescendant(major_version,0)', 'Base(#root,0)']