[Laravel] 認証機能のユーザー登録やパスワードリセットなどを無効化する方法


はじめに

Laravelではデフォルトで認証機能を簡単に作成する機能が備わっています。

認証機能を実装するには下記コマンドで実行して作成します。

— Laravel 5系 —

$ php artisan make:auth

— Laravel 6系以降 —

$ composer require laravel/ui
$ php artisan ui vue --auth

詳しいインストール方法については割愛しますが、上記コマンドで実行すると以下のような機能が実装されます。

  • ログイン
  • ユーザ登録
  • パスワードリセット

今回は、自動で用意された認証機能である「ユーザ登録」と「パスワードリセット」機能の有効化・無効化方法についての備忘録です。

 

実装方法

無効化方法は簡単です。

ルート設定のファイル「web.php」ファイルに以下のような記載があるところを探します。

Auth::routes();

上記を、下記のように修正します。

Auth::routes([
    'register' => false, //ユーザ登録画面の無効
    'reset' => false, //パスワードリセットの無効
]);

実際に、アクセスしてみると、下記のような画面が表示されるはずです。

しかし、ここで問題があります。

このままだと、ユーザ登録やパスワードリセットを行うことができないという問題です。

ではユーザ登録をどうするかというと、下記流れで行います。(ここでは省きます)

 

  1. 初回リリース時にユーザ登録情報をDBに直接用意する(初期ユーザを用意しておく。)

  2. 上記のようにユーザ登録やリセットを無効化する。

  3. ログイン後にユーザ登録やパスワードリセットを行うようにルート設定を変更する(管理者が行うなど)

 

さいごに

セキュリティ的にLaravelの認証処理をそのまま使うのはあまりお勧めしないので、少しいじる必要があります。

今後も備忘録として残していければと思います。