evotodi / password-meter-bundle

symfony 6 的密码计,补充了 https://github.com/HamedFathi/PasswordMeter 和 passwordmeter.com

安装: 142

依赖: 0

建议者: 0

安全: 0

星星: 1

观察者: 1

分支: 0

开放问题: 0

类型:symfony-bundle

7.0.0 2024-01-10 16:21 UTC

This package is auto-updated.

Last update: 2024-09-10 17:43:25 UTC


README

Symfony PhpStorm

Password Meter Symfony Bundle

PasswordMeter 是一个与 JavaScript 的 HamedFathi/PasswordMeter 相等的 PHP 克隆。

安装

使用以下命令安装包

composer require evotodi/password-meter-bundle

使用方法

此包提供了一个服务,可以生成与 passwordmeter.comHamedFathi/PasswordMeter 相同的密码评分。

配置

# config/packages/evotodi_password_meter.yaml
evotodi_password_meter:
    # Custom password requirements provider class
    requirements_provider: null
    
    # Custom password score range provider class
    score_provider: null

实现密码要求

默认要求为空,将仅返回评分和状态。
创建一个自定义要求提供程序,将返回匹配您自定义要求的错误数组。

首先创建一个实现 Evotodi\PasswordMeterBundle\RequirementsInterface 的类,并实现 getRequirements 方法。从 getRequirements 方法返回一个新的 Evotodi\PasswordMeterBundle\Models\Requirements,其中包含您所需的密码要求。

// src/Service/PasswordMeterRequirementsProvider.php

namespace App\Service;

use Evotodi\PasswordMeterBundle\Interfaces\RequirementsInterface;
use Evotodi\PasswordMeterBundle\Models\Requirements;

class PasswordMeterRequirementsProvider implements RequirementsInterface
{

	public function getRequirements(): Requirements
	{
		return new Requirements(minLength: 10);
	}
}

然后设置以下配置。如果不存在,您可能需要创建配置文件。

# config/packages/evotodi_password_meter.yaml
evotodi_password_meter:
    requirements_provider: App\Service\PasswordMeterRequirementsProvider

实现自定义密码评分范围

创建一个实现 Evotodi\PasswordMeterBundle\ScoreRangeInterface 的类,并实现 getScoreRange 方法。从 getScoreRange 方法返回一个新的评分范围数组。

// src/Service/PasswordMeterScoreProvider.php

namespace App\Service;

use Evotodi\PasswordMeterBundle\Interfaces\ScoreRangeInterface;

class PasswordMeterScoreProvider implements ScoreRangeInterface
{

	public function getScoreRange(): array
	{
		return [
            '40' => 'veryWeak', // 001 <= x <  040
            '80' => 'weak', // 040 <= x <  080
            '120' => 'medium', // 080 <= x <  120
            '180' => 'strong', // 120 <= x <  180
            '200' => 'veryStrong', // 180 <= x <  200
            '_' => 'perfect', //  >= 200
        ];
	}
}

数组必须包含至少2个元素,且最后一个元素键必须为 '_'

然后设置以下配置。如果不存在,您可能需要创建配置文件。

# config/packages/evotodi_password_meter.yaml
evotodi_password_meter:
    score_provider: App\Service\PasswordMeterScoreProvider

贡献

欢迎贡献!

请创建详细的issue和pull request。

许可证

此包是免费软件,根据 MIT 许可证 的条款分发。

更新

2024-01-10: 添加对 Symfony 7 的支持 2023-01-30: 初次发布