【Laravel】Laravel8 Jetstream でパスワード検証ルールを変更する


Laravel8 + Jetstream でパスワードの長さなど検証ルールを変更する方法がわかりにくかったので調べた結果を書いておきます。

答え

app/Actions/Fortify/PasswordValidationRules.php を以下のように変更すればOK.

    //(例)パスワードの長さを10文字以上にしたい場合
    protected function passwordRules()
    {
        //return ['required', 'string', new Password, 'confirmed'];
        return ['required', 'string', (new Password)->length(10), 'confirmed'];
    }

他にもアッパーケースや記号を含ませたいなどは new Password 以下のメソッド呼び出しをデイジーチェーンでつないで

(new Password)->length(10)->requireUppercase()->requireNumeric()

とすれば良い。

どんなメソッドがあるかは、vendor/laravel/fortify/src/Rules/Password.php で確認。

背景

Laravel8/Jetstream/Fortify のパスワード検証ルールの設定ファイルは、vendor/laravel/fortify/src/Rules/Password.php.

このファイルを直接編集してもパスワード検証ルールの変更はできるが、vendor フォルダの下なのでこのファイルを直接編集してしまうと composer update などララベルをアップデートした時に編集を上書きされてしまいます。

しかし、app 側でどうやって変更するのかがよくわからなかったので、今回の調査となった次第。

ドキュメント

ララベル本家のパスワード検証ドキュメント