LoginSignup
2
5

More than 5 years have passed since last update.

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

Posted at

はじめに

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

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

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5