FuelPHPでSentryを使おう
こんばんは。ファガイです。個人的にSimpleAuthが好きになれなかったのでSentryという認証システムを使うことにしましたよっと。
Sentryは複数のフレームワークに対応する認証システムであり、composerでのインストールが可能。FuelPHP1.6からはcomposerに標準対応するということで、使ってみようかなと。
2015-04-22追記
※最新版は2.1系です。この記事は2.0系向けの記事となります。
最新の2.1系ではテーブル情報が変わっている模様なので、テーブルの作成はschemaフォルダ
のmysql.sql
を利用してください。
Sentryの利点
- 複数フレームワークに対応している(Laravel,FuelPHP,CodeIgniter等のフレームワークに対応)
- フレームワーク無しでも動く
- 何となく良さそうな気がする
Sentryは当初、FuelPHP用に作られていたのか不明だが、FuelPHPパッケージ版もある。けどcomposerでいいよね・・。
導入
まずは、composer.pharを用意しなくてはいけません。composerはhttp://getcomposer.org/composer.pharから取得が出来ます。
用意出来たらfuel/app内にcomposer.pharを入れます。
次に、DLをするためにcomposer.jsonを同じフォルダ内に用意します。これはSentryのgithubに載っています。(https://github.com/cartalyst/sentry)
composer.json
{ "require": { "cartalyst/sentry": "2.0.*", "illuminate/database": "4.0.*", "ircmaxell/password-compat": "1.0.*" }, "minimum-stability": "dev" }
用意が終わったらインストールしましょう。
php composer.phar install
次はfuel/app/bootstrap.phpに2行を付け足す。
公式にAutoloader::register();以降に記述と書かれているため、その下に付け足しましょう。
// Enable composer based autoloading require APPPATH.'vendor/autoload.php'; //Sentry用のエイリアス class_alias('Cartalyst\Sentry\Facades\FuelPHP\Sentry', 'Sentry');
以上です。
これで基本はSentry自体の導入は完了。残りはテーブルを用意します。
ここからは一気に。
usersテーブル(usernameカラムは無くても良いです。カラムは自由に追加してOK)
因みに、ninjauthにそのまま対応させるのであれば、こちらを使用。(とかいいつつninjauthのsentry用の設定が古いので結局書き換えは必要。first_name,last_nameが追加です)
作られたmigrationのphpにユニークキーを付け足す。
\DBUtil::create_index('users', 'email', 'users_email_unique', 'UNIQUE');
groupsテーブル(グループ管理用のテーブル。permissionsに制限情報をいれる)
作られたmigrationのphpにユニークキーを付け足す。
\DBUtil::create_index('groups', 'name', 'groups_name_unique', 'UNIQUE');
throttleテーブル(よくわからない)
users_groupsテーブル(ユーザがどのグループに入っているのか示すテーブル)
ここまでで、テーブルの用意はできました。
あとはphp oil refine migrateをすれば完了です。
余談
idにunsignedが付いたほうがいいのですが、付いてくれないので付けた。
oil/classes/generate/migration/actions.php 70行目あたり
$have_id or $field_str = "\t\t\t'id' => array('constraint' => 11, 'type' => 'int', 'auto_increment' => true),".PHP_EOL . $field_str;
これを
$have_id or $field_str = "\t\t\t'id' => array('constraint' => 11, 'type' => 'int', 'auto_increment' => true, 'unsigned' => true),".PHP_EOL . $field_str;
こうですね。
面倒なのはSimpleAuthと同じだった・・・。そして2037年問題がある・・・。だけど使ってみる。
■追記
記事投稿後、約1日間ですがphp oil g migrationにてテーブルが作成出来なかったことを確認しました。って思ったらphp oil g modelの書き方とmigrationの書き方って違うんですね・・・。
コメント