是否可以根据活跃用户的角色在Magento中禁用自定义后端模块?如果我创建一个登录侦听器,并在该侦听器中获取用户角色,是否有任何可以调度以禁用特定模块的事件?
答案 0 :(得分:2)
您根本不需要编辑代码。只需根据需要创建模块,您就可以通过创建用户角色来控制管理员的模块输出。只需转到Admin -> System -> Permission -> Roles -> Create New Role-> Role Resources -> Select Resource Access to Custom
(您可以在此处查看系统中所有已启用的所有模块),然后取消选中该用户角色的模块。保存。完了。这就是全部。
答案 1 :(得分:0)
是。您的自定义模块需要具有acl资源定义,以便您可以根据用户角色启用和禁用模块或其某些操作。这实际上相对简单,可以通过在modules etc文件夹中创建一个名为adminhtml.xml的文件来完成。此文件将包含管理员中模块菜单系统的定义,它还将包含访问控制列表的定义。
使用模块操作的定义创建文件后,清除缓存,然后在编辑用户角色时应该看到配置选项。
<config>
<menu>
<your_module_name module="your_module_name">
<title>Your Module Name</title>
<sort_order>100</sort_order>
<children>
<new module="your_module_name" translate="title">
<title>Add New Article</title>
<sort_order>0</sort_order>
<action>your_module_name_admin/manage/new</action>
</new>
<list module="your_module_name" translate="title">
<title>Articles</title>
<sort_order>10</sort_order>
<action>your_module_name_admin/manage/index</action>
</list>
<settings translate="title" module="your_module_name">
<title>Settings</title>
<action>adminhtml/system_config/edit/section/your_module_name</action>
<sort_order>40</sort_order>
</settings>
</children>
</your_module_name>
</menu>
<acl>
<resources>
<all>
<title>Allow Everything</title>
</all>
<admin>
<children>
<your_module_name>
<title>Your Module Name</title>
<sort_order>70</sort_order>
<children>
<new>
<title>Create New Article</title>
<sort_order>0</sort_order>
</new>
<list>
<title>View & Edit Articles</title>
<sort_order>1</sort_order>
</list>
</children>
</your_module_name>
<system>
<children>
<config>
<children>
<your_module_name>
<title>Config Section Under System --> Configuration If Your Module Has One</title>
</your_module_name>
</children>
</config>
</children>
</system>
</children>
</admin>
</resources>
</acl>
</config>