CakePHPで認証モジュールCartalyst Sentry 2を利用する
Sentry 2
CakePHP2.5.5でSentry 2.1を利用します。
特徴
Cartalyst Sentry 2の特徴についてはgithubのページで確認することが出来ます。
PHPで利用できる認証とユーザー権限管理のモジュールです。
インストール
composerを使ってインストールします。CakePHPのルートに配置されているcomposer.jsonのrequireフィールドを設定します。
"require": { "php": ">=5.2.8", "ext-mcrypt": "*", "cartalyst/sentry": "2.1.*", "illuminate/database": "4.2.*" },
cartalyst/sentryとilluminate/databaseをインストールします。composer.jsonを追記したらコマンドプロンプトでアップデートします。
composer update
インストール完了です。vendorディレクトリが構成されます。
データベーステーブルの設定
composerでインストールすると
vendor/cartalyst/sentry/schema/mysql.sql
上のパスにDBテーブル定義用のsqlが配置されているので、そのSQLを利用してデータベースの構造を定義します。
インクルードパスの追加
vendorディレクトリをrequireできるようにインクルードパスを追加します。
$path = 'C:\xampp\htdocs\vhost\cakephp2.5.5;'; set_include_path(get_include_path().PATH_SEPARATOR.$path);
上のコードをCakePHPのbootstrap.phpの最後に追加します。
使い方
Controllerから利用する
Sentry 2の公式ドキュメントでも使い方を確認することが出来ます。
Controllerのclassの外側でrequireします。
require 'vendor/autoload.php'; use Illuminate\Database\Capsule\Manager as Capsule; class_alias('Cartalyst\Sentry\Facades\Native\Sentry', 'Sentry'); class PagesController extends AppController { }
ここまでの作業を行えば、公式のドキュメントを確認しながら開発を行うことが出来ます。
ユーザーの追加
Sentry2が利用可能な状態になったので、ユーザーを追加するコードを書きます。
$capsule = new Capsule; $capsule->addConnection([ 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'sentry2', 'username' => 'admin', 'password' => 'password', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', ]); $capsule->bootEloquent(); // admin権限のユーザーを追加 $user = Sentry::getUserProvider()->create( array( 'email' => 'web@engineer.local', 'password' => 'password', 'first_name' => 'kiyoharu', 'last_name' => 'hitoki', 'activated' => 1, 'permissions' => array ( 'admin' => 1 ) )); return 'created '.$user->id;
ユーザーの検索
ログインIDで検索する場合は以下の通りです。
$user = Sentry::findUserByLogin('web@engineer.local'); echo "<pre>"; var_dump($user); echo "</pre>";
その他のメソッドについては、Sentry2の公式マニュアルで確認することが可能です。