mei-labs / filament-renew-password
管理定期更换密码的包
v2.1.0
2024-03-23 14:22 UTC
Requires
- php: ^8.1
- filament/filament: ^3.0
- illuminate/contracts: ^10.0 || ^11.0
- illuminate/support: ^10.0 || ^11.0
- illuminate/validation: ^10.0 || ^11.0
- spatie/laravel-package-tools: ^1.16
README
Filament Renew Password 插件通过根据指定标准提示用户更换密码来增强 Filament。
安装
- 使用 composer 命令安装包
composer require mei-labs/fi-renew-password
- 发布相关供应商文件并运行迁移,这将在用户表中添加一个新列
last_renew_password_at
。
php artisan vendor:publish php artisan migrate
或者,如果您不想发布迁移或已数据库中存在此类情况的列,您可以跳过此步骤,并通过以下配置部分中描述的任何配置方法自定义列名。
- 在您的面板提供商中注册插件
use MeiLABS\Filament\RenewPassword\RenewPasswordPlugin; public function panel(Panel $panel): Panel { return $panel ->plugin(new RenewPasswordPlugin()); }
配置
Filament Renew Password 插件设计为开箱即用,配置最少。然而,您可以通过发布配置文件、更改环境变量或使用插件对象来覆盖默认设置来自定义插件。
通过插件配置
// app/Providers/Filament/YourPanelServiceProvider.php RenewPasswordPlugin::make() ->timestampColumn('password_changed_at') ->passwordExpiresIn(days: 30)
通过环境变量
// .env FILAMENT_RENEW_PASSWORD_DAYS_PERIOD=30 FILAMENT_RENEW_PASSWORD_TIMESTAMP_COLUMN=last_renew_password_at
通过配置文件
// config/filament-renew-password.php return [ 'timestamp_column' => 'password_changed_at', 'password_expires_in' => 30, ];
上述任何方法都可以工作。插件将按照以下优先级顺序使用配置:插件配置、环境变量、配置文件。
用法
- 在您的身份验证模型(用户)上实现
RenewPasswordContract
并在needRenewPassword
函数中定义提示密码更换的准则。
90天更换周期的示例
class User extends Authenticatable implements RenewPasswordContract { ... public function needRenewPassword(): bool { return Carbon::parse($this->last_renew_password_at ?? $this->created_at)->addDays(90) < now(); } }
或者,您可以在您的身份验证模型(用户)上使用 RenewPassword
特性。默认情况下,特性使用配置列和90天的更换周期。您可以通过配置插件来自定义列名和更换周期。
class User extends Authenticatable implements RenewPasswordContract { use RenewPassword; }