CakePHPとSentry 2の使い方

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ディレクトリが構成されます。

cakephp-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の公式マニュアルで確認することが可能です。

Webエンジニアブログにコメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CakePHPとSentry 2の使い方の記事にコメントを投稿