陈真 发表于 2020-12-16 09:07:23

二次开发-数据环境-管理工具委派

本帖最后由 adminlily 于 2020-12-16 09:13 编辑

委托'管理工具'菜单先决条件:您必须熟悉教程中使用的语法 并且已经创建了一个扩展.
学习:将管理员菜单授予管理员以外的用户
水平:[ ttps://www.itophub.io/wiki/page?id=level&dataflt%5B0%5D=level_%3DAdvanced]高级
域:[ ttps://www.itophub.io/wiki/page?id=domains&dataflt%5B0%5D=domains_%3DXML]XMLL[ ttps://www.itophub.io/wiki/page?id=domains&dataflt%5B0%5D=domains_%3DAccess%20rights]Access rights
最低版本:2.5.0
从iTop 2.5版本开始,您可以将管理员菜单授予管理员以外的用户。
局限性
除管理员以外,不能将以下菜单提供给其他任何人:

[*]Schedule Backup
[*]Configuration
[*]ITSM Designer
[*]ITop Hub
因此,某些类(例如与对象历史相关的所有类)都没有组织,从而允许访问带有允许组织的查询到查询的运行,从而产生用户漏洞,因为它们可以看到不允许看到的对象的历史。
菜单可视化
使用XML的1.5版本,现在可以控制访问基于类和右功能的任何菜单(读,写,删除等)。只有在该课程上拥有功能的人才能看到此菜单。
可以通过类上的功能绑定对菜单的访问
看到XML引用 有关自定义菜单的XML标签的详细信息。
如果组菜单没有当前用户的子菜单,则不显示组菜单
默认情况下,以下管理菜单由类上的功能控制。

[*]Users:在用户上写
[*]Profile:在简档上写
[*]Notifications:写在触发器上
[*]Audit:在AuditCategory上写
[*]Run Query:在ResourceRunQueriesMenu上写
[*]Query phrasebook:在查询上写
[*]Export:在ResourceAdminMenu上写
[*]Data Model:在ResourceRunQueriesMenu上写
[*]Universal Search:在ResourceAdminMenu上写
[*]Synchronization Data Sources:在SynchroDataSource上写

上面的所有类都可以在简档(角色)中(通过组)对其访问进行管理。
开箱即用,有6个新功能[:8082/bin/view/5/5.2/5.2%C2%B711/#new_groups]团体 它们是预定义,可以由现有或新的简档(角色)使用:

群组编号默认包含菜单组中包含的类
User用户帐户,配置文件User, URP_UserOrg, URP_UserProfile, URP_Profiles
AuditUAudit, 运行查询AuditCategory, AuditRule, ResourceRunQueriesMenu
Notification通知,运行查询Trigger, Action, lnkTriggerAction, ResourceRunQueriesMenu
Query查询短语手册,运行查询Query, QueryOQL, ResourceRunQueriesMenu
SynchroData同步数据源SynchroDataSource
AdminTools以上所有菜单all classes above

要访问该组之一,只需将该组添加到简档或创建以下建议的其中一项[:8082/bin/view/5/5.2/5.2%C2%B711/#profiles_which_could_be_created]简档(角色)
无论您配置了什么,非管理员用户都将永远不允许:

[*]编辑拥有管理员简档的用户,
[*]将管理员简档赋予用户。


分步示例
假设您想让拥有简档'Config经理'的用户访问'导出Menu'

[*]控制没有明显的Class这个菜单,我们将创建一个新的Abstract类,命名为:'RessourceExportMenu'
[*]我们将自定义“导出菜单”条目以将其绑定到该新创建的类上(用“ RessourceExportMenu”替换“ ResourceAdminMenu”)
[*]我们将通过一个新的组自定义“ Config经理”简档,以在“ RessourceExportMenu”类上包含“ modify”


创建抽象类
您可能会使用一个现有的类,这对于控制对该菜单的访问很有意义,但是在“导出”的情况下,我们找不到任何令人满意的类,因此我们将创建一个新的类。
新课程必须:

[*]扩展AbstractResource
[*]拥有类别grant_by_profile
   
      <class id="RessourceExportMenu" _delta="define">
      <parent>AbstractResource</parent>
      <properties>
      <comment>/* Export Menu access control. */</comment>
      <abstract>true</abstract>
      <category>grant_by_profile</category>
      </properties>
      <presentation/>
      <methods/>
    </class>



覆盖菜单定义


[ ttps://www.itophub.io/wiki/page?do=export_code&id=2_7_0%3Acustomization%3Adelegate_rights&codeblock=1]datamodels/2.x/itop-welcome-ITIL/datamodel.itop-welcome-ITIL.xml


<menu id="ExportMenu" xsi:type="WebPageMenuNode" _delta="must_exist">
      <enable_class _delta="redefine">RessourceExportMenu</enable_class>
      <enable_action _delta="redefine">UR_ACTION_MODIFY</enable_action>
    </menu>



完整的组和简档定义


[ ttps://www.itophub.io/wiki/page?do=export_code&id=2_7_0%3Acustomization%3Adelegate_rights&codeblock=2]datamodels/2.x/itop-profiles-ITIL/datamodel.itop-profiles-ITIL.xml


<user_rights>
    <groups>
      <group id="Export" _delta="define">
      <classes>
          <class id="RessourceExportMenu"/>
      </group>
    </groups>
    <profiles>
      <profile id="3" _delta="must_exist">
      <!-- id=3 correspond to the Configuration Manager profile -->
      <groups>
          <group id="Export" _delta="define">
            <actions>
            <action id="action:write">allow</action>
            </actions>
          </group>
      </groups>
      </profile>
    </profiles>
</user_rights>

在datamodel.itop-简档(角色)-ITIL.xml中检入现有简档(角色)的ID。
可以创建的简档(角色)
这些简档(角色)不存在,但是您可以创建它们,以便将“管理工具”菜单委托给用户:
<user_rights>
    <profiles>
      <profile id="43" _delta="define">
      <name>User Manager</name>
      <description>create/modify/delete users...</description>
      <groups>
          <group id="User">
            <actions>
            <action id="action:write">allow</action>
            <action id="action:delete">allow</action>
            <action id="action:read">allow</action>
            <action id="action:read bulk">allow</action>
            <action id="action:write bulk">allow</action>
            </actions>
          </group>
      </groups>
      </profile>
      <profile id="44" _delta="define">
      <name>Notification Manager</name>
      <description>Has the rights to create and modify the triggers and

actions</description>
      <groups>
          <group id="Notification">
            <actions>
            <action id="action:write">allow</action>
            <action id="action:delete">allow</action>
            <action id="action:read">allow</action>
            <action id="action:read bulk">allow</action>
            <action id="action:write bulk">allow</action>
            </actions>
          </group>
      </groups>
      </profile>
      <profile id="45" _delta="define">
      <name>Audit Manager</name>
      <description>Has the rights to create and modify the audit</description>
      <groups>
          <group id="Audit">
            <actions>
            <action id="action:write">allow</action>
            <action id="action:delete">allow</action>
            <action id="action:read">allow</action>
            <action id="action:read bulk">allow</action>
            <action id="action:write bulk">allow</action>
            </actions>
          </group>
      </groups>
      </profile>
      <profile id="46" _delta="define">
      <name>Query Manager</name>
      <description>Has the rights to create and modify the Query

Phrasebook</description>
      <groups>
          <group id="Query">
            <actions>
            <action id="action:write">allow</action>
            <action id="action:delete">allow</action>
            <action id="action:read">allow</action>
            <action id="action:read bulk">allow</action>
            <action id="action:write bulk">allow</action>
            </actions>
          </group>
      </groups>
      </profile>
      <profile id="47" _delta="define">
      <name>SynchroData Manager</name>
      <description>Has the rights to create and modify the Synchro data

source</description>
      <groups>
          <group id="SynchroData">
            <actions>
            <action id="action:write">allow</action>
            <action id="action:delete">allow</action>
            <action id="action:read">allow</action>
            <action id="action:read bulk">allow</action>
            <action id="action:write bulk">allow</action>
            </actions>
          </group>
      </groups>
      </profile>
      <profile id="48" _delta="define">
      <name>Admin Tools Manager</name>
      <description>Has the rights to Admin</description>
      <groups>
          <group id="AdminTools">
            <actions>
            <action id="action:write">allow</action>
            <action id="action:delete">allow</action>
            <action id="action:read">allow</action>
            </actions>
          </group>
      </groups>
      </profile>
    </profiles>
</user_rights>

技术细节
详细说明了菜单访问中2.5所做的修改和补充:
XML中的“管理工具”菜单
管理员菜单以前完全用纯PHP编写,并通过isAdministrator()检查加以保护。它已被翻译成XML,因此现在可以被覆盖。
菜单XML引用已得到丰富,可以指定,类,功能甚至是访问菜单所需的刺激。
当标签enable_admin_only设置为1时,将忽略提供的任何<enable_class>标签:只有具有管理员简档的用户才能看到此菜单。
如果要授予对enable_admin_only菜单的访问权限,则必须将标签enable_admin_only设置为0,或者使用_delta =“ delete”完全删除标签,并至少添加enable_class和enable_标签标签。
设计旨在与以前的iTop版本保持扩展兼容性。
NewObjectMenuNode,SearchMenuNode和OQLMenuNode具有控制可访问的自动类
需要保护WebPageMenuNode以防止直接访问(用户可能会猜测WebPage的URL,即使他没有看到菜单也尝试访问它)。为此,每个网页都将根据ApplicationMenu :: CheckMenuIdEnabled(“ MenuId”);进行检查。与MenuIdbeeinging在菜单的xml定义中使用的ID。这确保了为了能够执行网页,用户必须有权访问相应的菜单。
新的抽象类
一些管理菜单没有任何逻辑类可绑定,因此我们创建了专门用于控制此访问的新类。您可以根据需要使用此列表。

班级名称用法
抽象资源新的访问权限类应继承自AbstractResource
资源运行查询菜单用于根据菜单运行查询检查用户访问权利
资源管理菜单默认情况下用于所有没有适当类别的菜单


bizmodel vs grant_by_profile classes
组*具有bizmodel类别的所有类。某些简档具有对组*的读取访问权限。
默认情况下,除Administrators以外的用户无法访问带有类别grant_by_profile classes。

[*]用于控制“管理工具”菜单的应用类具有类别grant_by_profile。
[*]新的抽象类还具有类别grant_by_profile。


Grant矩阵型的变更
授权矩阵型显示具有类别grant_by_profile或bizmodel的类。
在iTop 2.5之前,仅显示带有类别bizmodel的类。
示例:对于具有用户经理简档的用户,请参见授权矩阵型中的新条目:
https://www.itophub.io/wiki/media?media=2_7_0%3Acustomization%3Agrant_matrix.png

新组
这是6个新的组,它们是预定义,可以由现有的或新的简档(角色)使用:
[ ttps://www.itophub.io/wiki/page?do=export_code&id=2_7_0%3Acustomization%3Adelegate_rights&codeblock=4]datamodels/2.x/itop-profiles-ITIL/datamodel.itop-profiles-ITIL.xml


   <user_rights>
      <group id="Notification" _delta="define">
      <classes>
          <!-- This class list is also present in AdminTools group -->
          <class id="Trigger"/>
          <class id="lnkTriggerAction"/>
          <class id="Action"/>
          <class id="ResourceRunQueriesMenu"/>
      </classes>
      </group>
      <group id="User">
      <classes>
          <!-- This class list is also present in AdminTools group -->
          <class id="User"/>
          <class id="URP_UserOrg"/>
          <class id="URP_UserProfile"/>
          <class id="URP_Profiles"/>
      </classes>
      </group>
      <group id="Audit">
      <classes>
          <!-- This class list is also present in AdminTools group -->
          <class id="AuditCategory"/>
          <class id="AuditRule"/>
          <class id="ResourceRunQueriesMenu"/>
      </classes>
      </group>
      <group id="Query">
      <classes>
          <!-- This class list is also present in AdminTools group -->
          <class id="Query"/>
          <class id="QueryOQL"/>
          <class id="ResourceRunQueriesMenu"/>
      </classes>
      </group>
      <group id="SynchroData">
      <classes>
          <!-- This class list is also present in AdminTools group -->
          <class id="SynchroDataSource"/>
      </classes>
      </group>
</user_rights>
</itop_design>
页: [1]
查看完整版本: 二次开发-数据环境-管理工具委派