权限方案

权限方案元素是对权限方案的封装。主要提供权限方案,角色,角色组信息的查询功能

实例化权限方案

本例中权限方案的配置信息如图

c731146ef7c74167a9776e7e81f4728f

[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)']