Tank_AuthをCodeigniter3系で動くようにする方法

「Codeigniter Talk」というfacebookのコミュニティで話題に出まして、Tank_AuthをCodeigniter3系で動かす手順について以下に簡単にまとめておきます。RC3で稼働を確認しています。
なお、GitHub/rdlabo/Tank_Auth_CI3で以下の変更をすませたものを配布しておりますので、そちらもご参考ください。

1.Tank_Auth2系をダウンロードしてくる

http://konyukhov.com/soft/tank_auth/からインストールすることができます。この記事執筆時点では、1.0.9が最新バージョンでした。
zipファイルでダウンロードされますので、普通に解凍して下さい。

2.ファイル群をCodegniterの指定のフォルダに移動

シンプルな構成になっているので、指定フォルダに移動するのは簡単だと思います。
・/application内のファイルを移動する
・/captchaを公開フォルダに設置
の二点だけ。
【PHP】CodeIgniterの認証用ライブラリtank_auth」とかわかりやすいので、ご参考ください。

3.ファイルの先頭文字を大文字にする

2系から3系の変更により、controllerとmodel内のファイルは、先頭が大文字(controller.php → Controller.php)という変更が行われました。そこで、controllersとmodelsの中身のファイル名先頭を大文字に変更して下さい。
 

4.Auth.phpの変更

controllers/Auth.php から以下を削除して下さい。
・11行目 $this->load->library(‘security’);
・50行目 $login = $this->security->xss_clean($login);
・set_rulesに含まれる全てのxss_clean(”|xss_clean”で検索をかけて探したら早いかも)

5.schema.sqlからテーブルを作成

とりあえず、schema.sqlをインポートしてテーブル群を作成して下さい。
その後、`ci_sessions`のテーブル構造が変更になってるので、`ci_sessions`を削除して、以下のsqlで再作成。

CREATE TABLE IF NOT EXISTS `ci_sessions` (
        `id` varchar(40) NOT NULL,
        `ip_address` varchar(45) NOT NULL,
        `timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
        `data` blob NOT NULL,
        PRIMARY KEY (id),
        KEY `ci_sessions_timestamp` (`timestamp`)
    );

6.codeigniterのconfig.phpを変更

上記で、xss_cleanを削除しているので、代わりにグローバルでxss_cleanを有効にします。
・411行目 $config[‘global_xss_filtering’] = TRUE;
 
また、デフォルトのsession管理が3系ではfileになっているので、databaseに変更。これはやらなくても動くかもですが、大体の方はdatabaseで管理するのではないでしょうか。
・356行目 $config[‘sess_driver’] = ‘database’;
 
以上です。それでは、また。

お問い合わせ