LaravelとSentinel、Codeceptionのインストールが完了したら、次にMiddlewareをSentinelに対応させます。
目次
はじめに
ログインなどの処理の流れは Laravel に組み込まれています。そこにSentinel用のGuardを組み込んで対応させます。
Laravelの認証は、 Guard と Provider によって実行されます。 Guard とは、ユーザーが認証済みかを判定する方法を定義するもので、 Provider は、ユーザーの情報をEloquentやデータベースなどから取り出す方法を定義するものです。
Sentinel用のこれらを作成して公開してくれていましたので、これを利用します。
GitHub - joshwhatk/sentinel-guard: Laravel Guard for Cartalyst's Sentinel
ライセンスは MIT License です。
必要なプログラムを組み込む
- GitHub - joshwhatk/sentinel-guard: Laravel Guard for Cartalyst's Sentinel をWebブラウザーで開く
- ウィンドウの右にある[Clone or download]をクリックして、[Download ZIP]を選択
- ダウンロードが完了したら、ファイルを解凍する
- Laravelのプロジェクトフォルダー内に、 app/Joshwhatk/Cent フォルダーを作成
- 解凍したフォルダー内の src の中にある [Cent.php][CentServiceProvider.php][UserModel.php]の3つのファイルをコピーして、作成した app/Joshwhatk/Cent フォルダーに貼り付ける
- composer.json をエディターで開く
- "autoload"の"psr-4"の定義を以下のように修正
"psr-4": { "App\\": "app/", "Joshwhatk\\Cent\\": "app/Joshwhatk/Cent/" }
以上で必要なファイルの組み込みができました。解凍したフォルダーなどは削除しても構いません。
ユーザーモデルを作成
Sentinel のデータベースに対応したユーザーモデルを用意して、認証に組み込むための機能も追加します。
- app/User.php をエディターで開く
- 以下のようにコードを修正
<?php namespace App; use Illuminate\Notifications\Notifiable; use Joshwhatk\Cent\UserModel; class User extends UserModel { use Notifiable; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'email', 'password', 'name', 'permissions', ]; /** * The attributes that should be hidden for arrays. * * @var array */ protected $hidden = [ 'password', ]; }
サービスプロバイダーを登録
- config/app.php をエディターで開く
- $providers 配列に、以下を追加
Joshwhatk\Cent\CentServiceProvider::class,
作成した cent という名前の Guard を設定する
- config/auth.php を開く
- 'guards' の定義の 'driver' を以下のように全て cent に変更する
'guards' => [ 'web' => [ 'driver' => 'cent', 'provider' => 'users', ], 'api' => [ 'driver' => 'cent', 'provider' => 'users', ], ],
設定を反映させる
以上、設定した内容を環境に反映させます。
- ターミナルで以下を実行して、 composer を再構成する
composer update
- php artisan serve でサービスを起動しているターミナルで、[control]+[C]を押して、サービスを停止
- 改めて以下をターミナルで実行して、サービスを再開させる
php artisan serve
以上で、認証のための auth ミドルウェア が Sentinel に対応しました。 http://localhost:8000 を再読み込みして、正常に表示されることを確認してください。また、 npm test も成功します。
次は、ユーザー登録を実装します。