こんにちは。
戦: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();
すれば、ログイン時にセッションにセットされてるので取れるようになります。
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。