我正在创建一个用于管理潜在客户的组件[潜在客户或客户潜在客户从前端提交],在此组件中我想实现这样的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
,则$UG
为6
输出
groupid group_name
1 Public
6 Manager
7 Administrator
如果登录用户为Administrator
,$UG
为7
。它也会返回相同的答案....我希望输出为
如果Manager
已登录
OUTPUT
groupid group_name
6 Manager
7 Administrator
如果Administrator
已登录
OUTPUT
groupid group_name
7 Administrator
或空
任何人请帮助我....
答案 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();