×

微信扫一扫,快捷登录!

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

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

委托'管理工具'菜单
先决条件:您必须熟悉教程中使用的语法 并且已经创建了一个扩展.

学习:将管理员菜单授予管理员以外的用户

水平:[ ttps://www.itophub.io/wiki/page?id=level&dataflt%5B0%5D=level_%3DAdvanced]高级[/url]

域:[ ttps://www.itophub.io/wiki/page?id=domains&dataflt%5B0%5D=domains_%3DXML]XML[/url]L  [ ttps://www.itophub.io/wiki/page?id=domains&dataflt%5B0%5D=domains_%3DAccess%20rights]Access rights[/url]

最低版本: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]团体[/url] 它们是预定义,可以由现有或新的简档(角色)使用:

群组编号默认包含菜单组中包含的类
User
用户帐户,配置文件User, URP_UserOrg, URP_UserProfile, URP_Profiles
Audit
UAudit, 运行查询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]简档(角色)[/url]

无论您配置了什么,非管理员用户都将永远不允许:

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


分步示例

假设您想让拥有简档'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[/url]


<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[/url]


  <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的类。

示例:对于具有用户经理简档的用户,请参见授权矩阵型中的新条目:



新组

这是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[/url]


   <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>




上一篇:二次开发-数据环境-创建简档(角色)
下一篇:二次开发- 修改界面
陈真

写了 292 篇文章,拥有财富 1566,被 4 人关注

您需要登录后才可以回帖 登录 | 立即注册
B Color Link Quote Code Smilies

成为第一个吐槽的人

Powered by IT 运维管理
返回顶部