zenepay/password-expiry

它处理用户的密码过期。

dev-main 2024-10-03 08:52 UTC

This package is auto-updated.

Last update: 2024-10-03 08:58:23 UTC


README

密码过期

  • 它允许您在创建/重置后x天后使用户密码过期。
  • 使用imanghafoori/laravel-password-history,用户不能使用最后x个以前的密码。
  • 可作为中间件和验证使用
  • 它支持Laravel 9.x - 11.x

安装

通过Composer

$ composer require zenepay/password-expiry

对于Laravel版本 < 11,您必须在config/app.php中包含以下服务提供者

'providers' => [
    ...
    Zenepay\PasswordExpiry\PasswordExpiryServiceProvider::class,
],

对于Laravel 11.x,请在bootstrap/provider.php中包含此内容

return [
    ...
    Zenepay\PasswordExpiry\PasswordExpiryServiceProvider::class,
],

You need to migrate you database.

```bash
php artisan migrate

您可以使用以下命令发布配置文件

php artisan vendor:publish --provider="Zenepay\PasswordExpiry\PasswordExpiryServiceProvider" --tag="config"

发布后,config/password_history.php配置文件包含

return [

      'expiry_days' => 90
];

您可以根据需要更改它。

用法

  • 在用户模型中包含以下特质
use Zenepay\PasswordExpiry\Traits\PasswordExpirable;

class User extends Authenticatable {
    use PasswordExpirable;
}
  • 您可以使用以下方法检查用户密码是否已过期?
$user->isPasswordExpired();
  • 您可以通过以下方式保护您的路由,防止过期密码的用户访问

对于Laravel < 11

将以下中间件添加到app/Http/Kernel.php中

  • 防止密码过期的用户访问页面。这将重定向到重置密码页面
use Zenepay\PasswordExpiry\CheckPasswordExpired;

protected $routeMiddleware = [
    ...
    'check-password-expired' => CheckPasswordExpired::class
]

对于Laravel 11

将以下内容添加到bootstrap/app.php中

use Zenepay\PasswordExpiry\CheckPasswordExpired;

->withMiddleware(function (Middleware $middleware) {
     $middleware->append(CheckPasswordExpired::class);
})

对于Laravel + Filament 3

对于Laravel Filament 3,您可以将它放在面板中间件中

use Zenepay\PasswordExpiry\CheckPasswordExpired;

   $panel->authMiddleware([
        ...,
        CheckPasswordExpired::class
    ])

验证以防止使用以前的密码

在任何密码规则的验证中,将NoPreviousPassword::ofUser($user)添加到

use Zenepay\PasswordExpiry\Rules\NoPreviousPassword;

    public function store(Request $request): RedirectResponse
    {
        $request->validate([
            ...
            'password' => ['required', 'confirmed',
            Rules\Password::defaults(),
            NoPreviousPassword::ofUser($request->user())],
        ]);
    }

在带有Breezy插件和配置文件的Filament中,您可以在以下位置添加规则

use Jeffgreco13\FilamentBreezy\BreezyCore;
use Zenepay\PasswordExpiry\Rules\NoPreviousPassword;
    $panel->plugins([
        BreezyCore::make()
        ->passwordUpdateRules(
            rules: [Password::default()->mixedCase()->uncompromised(3),NoPreviousPassword::ofUser(Auth::user())],
            requiresCurrentPassword: true,
        )
    ])

变更日志

有关最近更改的更多信息,请参阅变更日志

测试

$ composer test

贡献

有关详细信息,请参阅贡献行为准则

安全

如果您发现任何安全相关的问题,请通过:author_email发送电子邮件,而不是使用问题跟踪器。

致谢

  • [:author_name][link-author]
  • [所有贡献者][link-contributors]

许可

MIT许可(MIT)。有关更多信息,请参阅许可文件