2014-02-10 37 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中。