【Laravel8】JetStreamでパスワードポリシーを変更する

こんにちは。今回はJetStreamでパスワードポリシーを変更する方法を解説します。

パスワードポリシーとは

ユーザーが自身のアカウントのパスワードを設定する際に、満たさなくてはならないルールです。例えば8文字以上、大文字を含む、記号を含むなどです。ポリシーを設定する目的は、セキュリティを高めるためです。複雑なパスワードにするようポリシーを設定することで、アカウントの乗っ取りを防止することができます。

パスワードポリシーを設定する

パスワードポリシーは自前のバリデーションを記述することで設定することが可能です。しかし、JetStreamではパスワードポリシーを簡単に設定するためのメソッドが用意されているので、それを使います。編集するファイルはapp/Actions/Fortify/PasswordValidationRulesです。ここで設定したポリシーは、以下の機能に反映されます。

  • ユーザー登録
  • パスワード変更
  • パスワードリセット

passwordRulesメソッドを編集します。初期状態では以下のルールとなっています。

  • 必須入力
  • 確認で再度入力したパスワードと一致していること
  • パスワードは8桁以上入力必須
    protected function passwordRules()
    {
        return ['required', 'string', new Password, 'confirmed'];
    }

パスワードを10桁以上入力するポリシーに変更してみます。lengthメソッドを使用します。

    protected function passwordRules()
    {
		    $password = new Password();

		    $password->length(10);

		    return ['required', 'string', $password, 'confirmed'];
    }

他にも以下のメソッドを利用可能です。

    protected function passwordRules()
    {
		    $password = new Password();

		    // 最低10桁の入力を求める
		    $password->length(10);

		    // 最低1文字の大文字が必要
		    $password->requireUppercase();

		    // 最低1文字の数字が必要
		    $password->requireNumeric();

		    // 最低1文字の記号が必要
		    $password->requireSpecialCharacter();

		    return ['required', 'string', $password, 'confirmed'];
    }

どれも自前で書くと複雑になりがちなものですが、JetStreamを使うと1行で記述することができます。便利!

まとめ

今回はJetStreamでパスワードポリシーを設定する方法を解説しました。すごく便利なので使いましょう。以上!

Laravel

Posted by kobainmac