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
-
https://github.com/laravel/laravel/commit/f2279c02107f28b8c3cb1b8627c22a6fb2e7fc74↩
-
https://github.com/laravel/framework/commit/29c9ba0197179c018a20df30f3330b90de0923a9↩
-
https://github.com/laravel/framework/commit/f7070f3092aa350f991125a294bbec0475cf6aa0↩
-
https://github.com/laravel/framework/commit/6f07584f9b80d51c80fab0fd35285401dc7e9967↩