答案 0 :(得分:3)
实际上,由于Joomla中的访问级别为hard coded into the database! 1.5,这种字符串比较失败的唯一方法是当有人故意将新群体入侵时。可以在.ini-Files中更改字符串(以便非英语安装仍然使用数据库中的英语单词 - 对于其他表,例如插件或组件的名称,情况并非如此。)
您可以通过JFactory::getACL()
获取$acl->getGroupsByUser($userid, false)
(请参阅docs),但假设更高的ID也意味着更高的权限,似乎也有点hacky(虽然标准安装也是如此)。
除此之外,你可以接管Joomla!功能:更明确地定义,“管理员用户”是什么:可以安装新软件的人?谁可以改变系统的配置?只是做一个合理的假设,与你希望他作为管理员用户做什么相关的事情,在authorize()
- 调用(见docs)中使用它,并且可能在你的界面中记录它。
唯一干净的解决方案(我所知道的)将是为ACL-authorize-lookuptable定义新条目(目前仅在php中实现,而不是SQL)。这是确保它将成为Joomla的唯一方法! 1.6-proof,可以使用自定义用户组(因此管理员用户可以选择是否将此授权授予用户组)。例如:
$acl =& JFactory::getACL();
$acl->addACL('{com_nameOfExtension}', '{action}', 'users', 'super administrator');
$acl->addACL('{com_nameOfExtension}', '{action}', 'users', 'administrator');
我们再次拥有它们,硬编码的组名。好。
答案 1 :(得分:2)
答案 2 :(得分:0)
以下可能是Joomla的黑客攻击。我尝试过并开始工作。
以会话为例
$_SESSION[__default][user]->usertype;
这将使登录的用户类型可以在任何条件语句中使用它
答案 3 :(得分:0)
您可以查看已分配的用户组'使用getUser()函数登录用户。
$user =& JFactory::getUser();
$assigned_usergroups = $user->groups; // Array of assigned User Group
if (in_array(8, $assigned_usergroups)) {
echo "Super Admin";
}
else if (in_array(7, $assigned_usergroups)) {
echo "Admin";
}
else {
echo "Other"; //Any of Guest/Public/Others
}
您可以在数据库中看到Joomla预定义ID的以下快照:
答案 4 :(得分:-1)
如果你的joomla管理员用户名为admin
,那么你可以使用下面描述的代码
$user =& JFactory::getUser();
if($user->usertype == "Super Administrator" && $user->username == "admin")
{
//... do what ever
}