PHP
laravel5.7

Laravel 5.7の認証機能でユーザー登録・パスワードリセット・メールアドレス確認のルーティングON/OFFを切り替える方法


はじめに

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();
}
}


この箇所にて、ルーティングの可否が切り替えられています。