超簡単!Tank_authで権限設定

超簡単!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();

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

LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。

Webサイト制作の実績・料金を見る

この記事のシェア数

全国に展開する居酒屋「鳥よし」グループの総帥を務めています。加盟店舗数2000軒突破(推定)。現在加盟店を絶賛募集中です。

このメンバーの記事をもっと読む