在joomla 2.5中实现新类型ACL

时间:2012-09-12 07:37:19

标签: joomla joomla2.5

我正在创建一个用于管理潜在客户的组件[潜在客户或客户潜在客户从前端提交],在此组件中我想实现这样的ACL。

我的客户要求......

SuperAdmin
|—  Manager
|—|— Administrator

认为Administrator位于Manager下。请不要与joomla默认ACL进行比较。

所有潜在客户都显示为superadmin.Superadmin会将潜在客户分配给其他用户。

如果登录的用户是Manager,则他能够看到Manager群组下的所有用户线索。 Administrator小组。

如果登录的用户是Administrator,则他无权查看其他潜在客户,因为管理员没有任何子组,而是最后一组。

我使用以下查询

$query->select( 'c.id as groupid,c.title AS group_name');
$query->from('#__usergroups AS c');
$query->join('LEFT', '#__usergroups AS s ON (s.lft <= c.lft AND s.rgt >= c.rgt) OR (s.lft > c.lft AND s.rgt < c.rgt)' );
$query->where('s.id = "'.$UG.'"');
$query->order('c.lft');
$db->setquery($query);
$gids           = $db->loadResultArray();
$gids           = implode(",",$gids);

$UG =&gt;登录用户groupid。

如果登录的用户为Manager,则$UG6

输出

 groupid    group_name
   1         Public
   6         Manager
   7         Administrator

如果登录用户为Administrator$UG7。它也会返回相同的答案....我希望输出为

如果Manager已登录

OUTPUT

 groupid    group_name
   6      Manager
   7     Administrator

如果Administrator已登录

OUTPUT

 groupid    group_name
   7    Administrator

或空

任何人请帮助我....

1 个答案:

答案 0 :(得分:3)

最后我找到了答案

AND s.lft <= c.lft AND s.rgt >= c.rgt条件

中添加了 where
$query->select( 'c.id as groupid,c.title AS group_name');
$query->from('#__usergroups AS c');
$query->join('LEFT', '#__usergroups AS s ON (s.lft <= c.lft AND s.rgt >= c.rgt) OR (s.lft > c.lft AND s.rgt < c.rgt)' );
$query->where('s.id = "'.$UG.'" AND s.lft <= c.lft AND s.rgt >= c.rgt ');
$query->order('c.lft');
$db->setquery($query);
$gids           = $db->loadResultArray();

enter image description here