我正在创建一个辅助函数来从
name
数组获取 user group
字段值。所以整个想法是在像 system_admin
这样的函数参数中传递值,然后根据定义的用户组传入 switch 来获取内容。
到目前为止我已经做了如下。我确信这样做是蹩脚的方式,但不知道如何让它发挥作用。
功能
function admin_heading($groupname)
{
$CI =& get_instance();
$groups = $CI->ion_auth->groups()->result();
foreach ($groups as $key => $value)
{
foreach ($value as $val => $result){
echo $result . '<br/>';
}
}
//return $groups;
}
如果我返回 $group 而不是得到这个数组
Array
(
[0] => stdClass Object
(
[id] => 1
[name] => system_admin
[description] => System Administrator
)
[1] => stdClass Object
(
[id] => 2
[name] => admin
[description] => Administrator
)
[2] => stdClass Object
(
[id] => 3
[name] => HR
[description] => Human Resources
)
[3] => stdClass Object
(
[id] => 4
[name] => REC
[description] => Recruitment
)
[4] => stdClass Object
(
[id] => 5
[name] => TRA
[description] => Training
)
[5] => stdClass Object
(
[id] => 6
[name] => AMs
[description] => Account Managers
)
[6] => stdClass Object
(
[id] => 7
[name] => TLs
[description] => Team Leaders
)
[7] => stdClass Object
(
[id] => 8
[name] => FIN
[description] => Finance
)
[8] => stdClass Object
(
[id] => 9
[name] => FAC
[description] => Facilities
)
[9] => stdClass Object
(
[id] => 10
[name] => AHT
[description] => After Hours Transportation
)
[10] => stdClass Object
(
[id] => 11
[name] => member
[description] => Member
)
)
通过回显 $result 得到低于结果
1
system_admin
System Administrator
2
admin
Administrator
3
HR
Human Resources
4
REC
Recruitment
5
TRA
Training
6
AMs
Account Managers
7
TLs
Team Leaders
8
FIN
Finance
9
FAC
Facilities
10
AHT
After Hours Transportation
11
member
Member
1
所以我想要的最终结果是例如
当我在函数
system_admin
中传递 admin_heading('system_admin')
时,它将检查数据库中是否存在 system_admin
组。如果存在,它将传入 switch($var)
,我将拥有包含组名称的文件,该文件将基于该组名称进行调用。
现在这种类型的条件代码是第一次做,所以不知道是否有比这更好的方法。所以如果有更好的方法请跟我学习。我将不胜感激。
编辑
所以我到底在寻找的是
我想根据用户组加载文件/内容和标题。因此,例如,如果登录用户是
system_admin
,它将自动检查组并加载文件/内容和标题,与其他组相同。
注意: 用户也可能位于多个组中,因此需要检查较高的组并相应地加载内容。
我希望这很容易理解。
我建议你也应该在数据库中保存排名。这会有所帮助 如果用户具有多个访问权限(例如系统管理员、管理员)。
创建一个单独的函数来检查用户组并返回用户角色。
<?php
function admin_heading($groupname) {
$userId = 101; // You can get login userid here.
$userRole = $this->checkUserRole($userId);
switch ($userRole) {
case 'administrator':
// Load heading for administrator.
break;
case 'hr':
// Load Heading for HR
break;
default:
// May ur default role :)
break;
}
}
function checkUserRole() {
$CI = & get_instance();
//$userRole = ''
// Run a single query which will return user max group.
return $userRole;
}
我想您可以获取数据库中可用的用户详细信息和角色。因此运行一个查询 获得用户更高的角色,可能您需要将用户表与您的角色表连接起来。