Laravel 5.1 => 5.2 へのアップグレード
このサイト、Laravel 5.1 => 5.2 へのアップグレードをおこないまして、おおむね本家のガイドどおりでいけました。
ポイントは
- Auth まわりの変更が大きいので、このサイトのように Auth + User モデル(MongoDB使ってます)のところをカスタマイズしてると結構ややこしくなる(Authenticatable インターフェイスが変更になってるとか config の書き方とか)
- Input facade がなくなって Request facade によせる設計変更があったのでアプリ側のコードは結構修正が必要(これ自体は Nice Laravel ってかんじですね)
- Route::group が機能追加されていてイケてるのでちゃんとその仕組にのるように既存 routes.php を修正 + Kernel.php 修正を行う
あたりでした。3時間くらいで移行完了。
Auth 周りのところを少し解説すると、このサイトは MongoDB にデータを格納しているというところの影響で、AuthServiceProvider.php を以下のようにカスタマイズしています。
class AuthServiceProvider extends ServiceProvider
{
// ... snip ...
public function boot(GateContract $gate)
{
$this->registerPolicies($gate);
Auth::provider('mongo', function($app){
return new MongoUserProvider;
});
}
}
これは Custom User Provider の実装をしていて、上記コードにある MongoUserProvider クラスは UserProvider interface を MongoDB ベースで実装しているクラスになっているという具合です。
つづいて、5.2 から config/auth.php 側が大幅に変更になっていますが、以下のように providers.users.driver を上記と一致させるように設定することで 5.2 の Auth で動作します。
'providers' => [
'users' => [
'driver' => 'mongo',
'model' => App\User::class,
],
],
以上となります。