2014-02-10 36 views
2

我在我的项目认证库中使用CodeIgniter的Ion_auth。我试图为其他用户类型(除管理员以外有三种用户类型)为is_admin()创建类似的功能,以检查登录用户是否属于这三种类型之一,以便我可以将它们重定向到它们各自的页面。 Ion_auth正在使用名为is_admin的事件,但我无法理解Ion_auth_model.php中发生了什么,以及它如何检查登录用户是否为admin。那么我怎么能让其他功能/事件类似于这个呢?CodeIgniter Ion Auth:is_admin()如何工作?

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

+0

http://stackoverflow.com/questions/15143313/use-ion-auth-authentication-for-codeigniter-in-another-controller – Arunu

回答

4

我只是在看源代码github

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

你你正在寻找功能上线447文件的应用程序/库/ Ion_auth.php

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)

但是!离子已经为你解决方法,这种方法是你在找什么

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

+0

请前往[这里](http://pastebin.com/SsJDADt0)我建立在你的建议基础上,但我不知道为什么它不会在组员工作,如果管理员工作正常 –

+0

@FreddySidauruk你好,请在这里提问stackoverflow粘贴相关的代码只,标记问题,有人会回答 – Kyslik

0

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

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