Sentry2(Laravel4)でデータベーステーブルの作成

前回の『Laravel4でSentry2パッケージの追加』では、パッケージの追加方法を調べるためにSentry2をインストールしましたが、今回から実際にSentry2の使い方を調べてみたいと思います。

Sentry2とは

Senty2とは、高機能認証パッケージで、Laravel4だけでなく、FuelPHPや、CodeIgniterにも対応しています。アクティベーション機能やパスワードリセット機能、ユーザーによる機能制限等の便利な機能が標準で装備されていますので、簡単にユーザー管理アプリケーションが作成できます。

データベーステーブルの作成

1.  まず、データベーステーブルを作成したいと思います。Sentry2には、データベーステーブルを作成するためのAritisanコマンドが用意されています。コマンドプロンプトから下記のように記述します。

cd c:\xampp\htdocs\laravel4

php artisan migrate –package=cartalyst/sentry

laravel4_057

2. 4つのデータベーステーブル(users、groups、users_groups、throttle)が作成されました。

laravel4_058

3.  それぞれのテーブルを見てみたいと思います。まず、usersテーブルです。

laravel4_059

4.  次にgroupsテーブルです。

laravel4_060

5. users_groupsテーブルです。ピボットテーブル(ユーザーとグループを繋ぐためのテーブル)ですので、user_idとgroup_idしかありません。

laravel4_061

6. 最後にユーザーの機能制限(認証権限を調整するため)の、throttleテーブルです。

laravel4_062

パーミッション(権限)

7. Sentry2の基本的なPermissionは、下記のようになっています。

  • グループ権限(Groups Permissions)
    0 : 拒否
    1 : 許可
  • ユーザー権限(Users Permissions)
    -1 : 拒否
    1 : 許可
    0 : 継承

※最後の継承は、グループ権限を継承するのだと思いますが、間違っていたら後日修正します。

グループの作成

8. それでは、グループを作成してみたいと思います。ルーターに下記のように記述します。

laravel4/app/routes.php

//Sentryでグループの作成
 Route::get('create/groups',function(){
 try
 {
 // Adminグループの作成
 $group = Sentry::getGroupProvider()->create(array(
 'name' => 'Administrators',
 'permissions' => array(
 'admin' => 1,
 'user' => 1,
 ),
 ));
 }
 catch (Cartalyst\Sentry\Groups\GroupExistsException $e)
 {
 echo 'Administratorグループは既に存在しています。';
 }
 try
 {
 // Moderatorグループの作成
 $group = Sentry::getGroupProvider()->create(array(
 'name' => 'Moderators',
 'permissions' => array(
 'admin.view' => 1,
 'user.create' => 1,
 'user.delete' => 0,
 'user.view' => 1,
 'user.update' => 1,
 ),
 ));
 }
 catch (Cartalyst\Sentry\Groups\GroupExistsException $e)
 {
 echo 'Moderatorsグループは既に存在しています。';
 }
 try
 {
 // Userグループの作成
 $group = Sentry::getGroupProvider()->create(array(
 'name' => 'Users',
 'permissions' => array(
 'admin' => 0,
 'user.create' => 1,
 'user.delete' => 0,
 'user.view' => 1,
 'user.update' => 1,
 ),
 ));
 }
 catch (Cartalyst\Sentry\Groups\GroupExistsException $e)
 {
 echo 'Usersグループは既に存在しています。';
 }
 });

9. ブラウザでアクセスしてみます。

localhost/laravel4/public/create/groups

10. 下記のようにグループが登録されました。

laravel4_063

※permissionsの0(例:’user.delete’=>0)は登録されないみたいですので、記述する必要はありません。尚、このpermissionsの登録の方法が正しいかどうかは検証していませんので、後日間違っていたら修正します。

ユーザーの作成

11. ついでにユーザーまで作成してみましょう。ルーターに下記のコードを記述します。

laravel4/app/routes.php

//Sentryでユーザーの作成
Route::get('create/user',function(){
 try
{
 // ユーザーの作成
 $user = Sentry::getUserProvider()->create(array(
 'email' => 'nakada@gmail.com',
 'password' => 'password',
 'first_name' => '秀雅',
 'last_name' => '中田',
 'activated' => 1,
 ));
//グループIDを使用してグループを検索
 $adminGroup = Sentry::getGroupProvider()->findById(1);
// ユーザーにグループを割り当てる
 $user->addGroup($adminGroup);
}
catch (Cartalyst\Sentry\Users\LoginRequiredException $e)
{
 echo 'ログインフィールドは必須です。';
}
catch (Cartalyst\Sentry\Users\PasswordRequiredException $e)
{
 echo 'パスワードフィールドは必須です。';
}
catch (Cartalyst\Sentry\Users\UserExistsException $e)
{
 echo 'このログインユーザーは存在します。';
}
catch (Cartalyst\Sentry\Groups\GroupNotFoundException $e)
{
 echo 'グループは見つかりません。';
}
});

ここでは、18-25行目は不必要なのですが、例外処理の方法が分かり易く記述されていますので、そのまま記述しています。このコード例は、フォームから入力された時の作成例です。

12. これもブラウザでアクセスしてみます。

localhost/laravel4/public/create/user

13. usersテーブルに下記のように登録されました。

laravel4_064

14. users_groupsテーブルにも下記のように登録されています。

laravel4_065

今日は、Sentry2のデータベーステーブルの作成方法と簡単なデータの登録方法を調べてみました。

このエントリーを含むはてなブックマーク Buzzurlにブックマーク livedoorクリップ Yahoo!ブックマークに登録

トラックバック&コメント

この投稿のトラックバックURL:

トラックバック

コメント

  1. guest より:

    × localhost/laravel4/public/creat/user
    ◯ localhost/laravel4/public/create/user


コメントをどうぞ

このページの先頭へ