CodeIgniter Ion Auth:is_admin()是如何工作的?

时间:2014-02-10 15:08:41

标签: php codeigniter ion-auth

我在项目auth库中使用Ion_auth代码进行CodeIgniter。我正在尝试为其他用户类型(除了admin之外有三种用户类型)创建类似is_admin()的功能,以检查登录用户是否属于这三种类型中的一种,因此我可以将它们重定向到他们各自的页面。 Ion_auth正在使用名为 is_admin 的事件,但我无法理解Ion_auth_model.php中发生的事件以及它如何检查登录用户是否为admin。那么如何才能使其他功能/事件与此类似呢?

我知道我可以做一些事情,比如查询数据库并检查用户组,但我想按照Ion_auth的方式做。这样我也可以通过实际理解股票代码来满足自己。

2 个答案:

答案 0 :(得分:4)

我只关注github上的源代码。

由于许多auth库存储,您在会话中查找的信息和库本身会检查会话变量。

您正在寻找的功能是在文件应用程序/库/ Ion_auth.php中的第447行

public function is_admin($id=false)
    {
        $this->ion_auth_model->trigger_events('is_admin');

        $admin_group = $this->config->item('admin_group', 'ion_auth');

        return $this->in_group($admin_group, $id);
    }

为了创建你自己的我建议你反转engeneer模型(ion_auth_model.php)

但是! Ion已经为您提供了一种解决方法,这种方法就是您正在寻找的方法

in_group()

$group = 'gangstas';
    if (!$this->ion_auth->in_group($group))
    {
        $this->session->set_flashdata('message', 'You must be a gangsta to view this page');
        redirect('welcome/index');
    }

source

答案 1 :(得分:0)

函数is_admin()指的是文件/application/config/ion_auth.php中定义的管理组:$config['admin_group'] = 'admin'; // Default administrators group, use name

admin_group名称本身存储在ion_auth数据库字段groups.name。