Laravel/カスタムパスワードポリシーの実装
Laravel/カスタムパスワードポリシーの実装(の一例)
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Gate;
use Illuminate\Support\Facades\Validator;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*/
public function register(): void
{
//
}
/**
* Bootstrap any application services.
*/
public function boot(): void
{
// カスタムのパスワードバリデーションルールを定義
Validator::extend('custom_password_rule', function ($attribute, $value, $parameters, $validator) {
// パスワードに小文字、大文字、数字、記号のうち3つ以上が含まれるかどうかをチェック
// 小文字が含まれるかどうかをチェック
$hasAlphaLower = preg_match('/[a-z]/', $value);
// 大文字が含まれるかどうかをチェック
$hasAlphaUpper = preg_match('/[A-Z]/', $value);
// 数字が含まれるかどうかをチェック
$hasNumber = preg_match('/[0-9]/', $value);
// 記号が含まれるかどうかをチェック
$hasSymbol = preg_match('/[^A-Za-z0-9]/', $value);
// 3つ以上の条件を満たしているかチェック
$conditionsMet = ($hasAlphaLower + $hasAlphaUpper + $hasNumber + $hasSymbol) >= 3;
// かつ、10文字以上
return $conditionsMet && mb_strlen($value) >= 10;
});
}
}
ここで定義したcustom_password_ruleはLaravelアプリケーションのどこからでもバリデーションルールとして使える。
Laravel/カスタムパスワードポリシーの実装.md