はじめに
Laravelでは、認証機能を以下のコマンドで導入することができます。
php artisan make:auth
この際、ログインの機能に加え、ユーザー登録機能、メールアドレス確認も追加されますが、
状況により機能を取りやめたい場合があります。
そのための方法をメモとして残します。
ルーティングの切り替え
認証機能のルーティングは以下の一文で、一括して機能しています。
routes\web.php
Auth::routes();
これに対して、連想配列の引数を渡してあげることで、
認証の各機能に対して、ON・OFFの切り替えを行うことができます。
(正確には、ルーティングを取りやめるということ)
routes\web.php
Auth::routes(['register' => false, 'reset'=> false, 'verify'=> false]);
各連想配列のインデックスは以下に対応します。
true
がON,false
がOFFです。
register
: ユーザー登録へのルーティング
reset
: アカウントリセットへのルーティング
verify
: メールアドレス確認へのルーティング
ソースコードの挙動
Authクラスはconfig\app.php
にて、エイリアスとして定義されています。
config\app.php
'Auth' => Illuminate\Support\Facades\Auth::class,
routes()
の引数は最終的にvendor\laravel\framework\src\Illuminate\Routing\Rounter.php
内の
auth
関数に渡されます。
vendor\laravel\framework\src\Illuminate\Routing\Rounter.php
public function auth(array $options = [])
{
// Authentication Routes...
$this->get('login', 'Auth\LoginController@showLoginForm')->name('login');
$this->post('login', 'Auth\LoginController@login');
$this->post('logout', 'Auth\LoginController@logout')->name('logout');
// Registration Routes...
if ($options['register'] ?? true) {
$this->get('register', 'Auth\RegisterController@showRegistrationForm')->name('register');
$this->post('register', 'Auth\RegisterController@register');
}
// Password Reset Routes...
if ($options['reset'] ?? true) {
$this->resetPassword();
}
// Email Verification Routes...
if ($options['verify'] ?? false) {
$this->emailVerification();
}
}
この箇所にて、ルーティングの可否が切り替えられています。