实际上,由于访问级别被硬编码到Joomla的数据库中!1.5,这种字符串比较可能失败的唯一方法是有人故意将新组侵入其中。可以在 .ini 文件中更改字符串(以便非英语安装仍然使用数据库中的英语单词 - 对于其他表,例如插件或组件的名称,这不是真的。)
您可以通过, 然后(请参阅docs )获取组 ID,但假设更大的 id 也意味着更大的权限,这似乎也有点 hacky(尽管对于标准安装来说确实如此)。JFactory::getACL()$acl->getGroupsByUser($userid, false)
除此之外,您可以接管 Joomla!能力:更明确地定义,什么是“管理员用户”:可以安装新软件的人?谁可以更改系统的配置?只需做一个合理的假设,与您希望他作为管理员用户做什么相关的事情,在authorize()-Call 中使用它(请参阅文档),并可能在您的界面中记录它。
唯一干净的解决方案(据我所知)是为 ACL-authorize-lookuptable 定义新条目(目前仅在 php 中实现,而不是在 SQL 中实现)。这是确保它是 Joomla 的唯一方法!1.6 证明,可以自定义用户组(因此管理员用户可以选择是否将此授权授予用户组)。例如:
$acl =& JFactory::getACL();
$acl->addACL('{com_nameOfExtension}', '{action}', 'users', 'super administrator');
$acl->addACL('{com_nameOfExtension}', '{action}', 'users', 'administrator');
我们又得到了它们,硬编码的组名。好。