LaravelでAuth系のコントローラが最初から存在するのはなぜか

ご存知の通りLaravelではartisan make:authすることでいくつかのファイルが生成・変更され、デフォルトの認証関係の機能を有効にできる。

だが、じつはこれを実行しなくとも、最初からApp\Http\Controllers\Auth\LoginControllerをはじめとする各種コントローラが存在している。

GitHubで履歴を辿って調べてみた。確証はないがおそらく、単純な歴史的経緯が理由のようだ。


認証用のコントローラが laravel/laravel (Laravelのフレームワークのコア部分を除いたリポジトリ。いくつかのサンプル的なコードが含まれる)上で実装されたのは5.0のころ1のようだ。

この時点ではmake:authはなかった。こちらは5.2のころ2に実装されている。

もう一つ興味深いのが、このとき実装されたmake:authが一度削除されている3ということだ。各種ファイルがlaravel/laravelにすでに含まれているから不要という理由で削除されている。このときは5.8現在とは違い、make:authが認証用のコントローラも生成していたようで、そのせいで重複と考えられたのだろう。

その後5.2のうち4に再度実装され、今度はlaravel/laravel側で存在するコントローラは生成されない形で実装された。

ということで歴史だけ見ると、先にlaravel/laravel内のファイルとして実装してしまったので、というだけでほかの理由などはなさそうだ。

現状はいまいちなので、laravel/laravelから認証用コントローラを削除し、make:authで生成できるようになって欲しいが、リポジトリが違うことからいろいろ面倒そうではある。


余談なのだが、make:authの実体となるファイルは一度削除される前と後で名前が変わり、さらにその後再度名前が戻される形で変更されており、そのせいで履歴を辿るのがちょっとややこしい。5