Web無料相談会2018冬
Web無料相談会2018冬
2013.01.08

超簡単!Tank_authで権限設定

鳥よし

こんにちは。

戦:47 僧:46 魔:52 武:51 盗:57 旅:48
レン:52 パラ:48 マ:31 ス:25

鳥よしです。
(あ、出だしはドラクエの話です)

今日はCodeIgniterでTank_authというライブラリを使って認証機能を実現しているシステムに、権限設定ができるようにしたときの話です。

すんごく簡単にできたので(簡単にブログに書けそうなので)、書いてみます。
※CodeIgniterやTank_authは入っている前提で書きます。

1.テーブルに任意のカラム追加

既に認証用に使用しているusersテーブルに、権限用のカラムを追加します。
今回は「role」という名前のint(1)カラムを追加しました。
(権限以外にも使えるのでいろいろ試してください。)

2.Tank_authのソース修正

Tank_auth.php内で「set_userdata」で検索をかけると、以下3つの結果がヒットするので、参考のように修正します。

(1)
【変更前】

$this->ci->session->set_userdata(array(
    'user_id'  => $user->id,
    'username' => $user->username,
    'status'   => ($user->activated == 1) ? STATUS_ACTIVATED : STATUS_NOT_ACTIVATED,
));

【変更後】

$this->ci->session->set_userdata(array(
    'user_id'  => $user->id,
    'username' => $user->username,
    'status'   => ($user->activated == 1) ? STATUS_ACTIVATED : STATUS_NOT_ACTIVATED,
    'role'     => $user->role
));

(2)
【変更前】

$this->ci->session->set_userdata(array(
    'user_id'  => '',
    'username' => '',
    'status'   => '',
));

【変更後】

$this->ci->session->set_userdata(array(
    'user_id'  => '',
    'username' => '',
    'status'   => '',
    'role'     => ''
));

(3)
【変更前】

$this->ci->session->set_userdata(array(
    'user_id'  => $user->id,
    'username' => $user->username,
    'status'   => STATUS_ACTIVATED,
));

【変更後】

$this->ci->session->set_userdata(array(
    'user_id'   => $user->id,
    'username'  => $user->username,
    'status'    => STATUS_ACTIVATED,
    'role'      => $user->role
));

3.追加した項目の取得関数を追記

以下のような取得用の関数を追記します。

function get_role()
{
    return $this->ci->session->userdata('role');
}

たったこれだけでした。

 

後は必要なところで

$this->tank_auth->get_role();

すれば、ログイン時にセッションにセットされてるので取れるようになります。