CodeIgniter查询获取用户最高权限级别

问题描述 投票:0回答:1

我正在创建一个辅助函数来从

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 arrays codeigniter activerecord
1个回答
1
投票

我建议你也应该在数据库中保存排名。这会有所帮助 如果用户具有多个访问权限(例如系统管理员、管理员)。

创建一个单独的函数来检查用户组并返回用户角色。

 <?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;
}

我想您可以获取数据库中可用的用户详细信息和角色。因此运行一个查询 获得用户更高的角色,可能您需要将用户表与您的角色表连接起来。

© www.soinside.com 2019 - 2024. All rights reserved.