2

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

我的客户要求...

SuperAdmin
|—  Manager
|—|— Administrator

考虑AdministratorManager。请不要与joomla默认ACL比较。

所有线索都显示给超级管理员。超级管理员会将线索分配给其他用户。

如果登录的用户是一个Manager,他可以看到所有的用户都领导着那些在Manager组和Administrator组下的人。

如果登录用户是a 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=> 登录用户 groupid。

如果登录用户是Manager$UG6

输出

 groupid    group_name
   1         Public
   6         Manager
   7         Administrator

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

如果已Manager登录

输出将是

 groupid    group_name
   6      Manager
   7     Administrator

如果已Administrator登录

输出将是

 groupid    group_name
   7    Administrator

或为空

任何人请帮助我....

4

1 回答 1

3

最后我找到了答案

AND s.lft <= c.lft AND s.rgt >= c.rgtwhere条件中添加行

$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();

在此处输入图像描述

于 2012-09-12T09:37:54.203 回答