zenepay / password-expiry
它处理用户的密码过期。
dev-main
2024-10-03 08:52 UTC
Requires
- php: ^8.1
- illuminate/support: ^10.0|^11.0
- imanghafoori/laravel-password-history: ^1.0.2
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)。有关更多信息,请参阅许可文件