mei-labs/filament-renew-password

管理定期更换密码的包

v2.1.0 2024-03-23 14:22 UTC

This package is auto-updated.

Last update: 2024-09-23 15:19:37 UTC


README

Filament Renew Password 插件通过根据指定标准提示用户更换密码来增强 Filament。

Screenshot

安装

  1. 使用 composer 命令安装包
composer require mei-labs/fi-renew-password
  1. 发布相关供应商文件并运行迁移,这将在用户表中添加一个新列 last_renew_password_at
php artisan vendor:publish
php artisan migrate

或者,如果您不想发布迁移或已数据库中存在此类情况的列,您可以跳过此步骤,并通过以下配置部分中描述的任何配置方法自定义列名。

  1. 在您的面板提供商中注册插件
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,
];

上述任何方法都可以工作。插件将按照以下优先级顺序使用配置:插件配置、环境变量、配置文件。

用法

  1. 在您的身份验证模型(用户)上实现 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;
}