时间:2010-07-26 11:14:34

标签: joomla joomla1.5 user-accounts administrator

5 个答案:

答案 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的以下快照:

Snapshot here

答案 4 :(得分:-1)

如果你的joomla管理员用户名为admin,那么你可以使用下面描述的代码

$user =& JFactory::getUser();
if($user->usertype == "Super Administrator" && $user->username == "admin")
{
  //... do what ever
}