discoverydesign / filament-locksmith
Requires
- filament/filament: ^3.0
- genphrase/genphrase: ^1.2.1
- spatie/laravel-package-tools: ^1.15.0
README
🔒 Filament PHP 中轻松创建密码 🤫
此包允许您为 Filament PHP 添加一个功能丰富的密码输入/字段。
https://packagist.org.cn/packages/discoverydesign/filament-locksmith
特性
- 能够复制密码
- 能够自动生成密码。默认为32个随机字符字符串。
- 用户友好的预设生成器,创建3词组合密码。例如:
elephant-plant-photo
。 - 将密码存储到数据库时自动进行哈希处理。当无法使用类型时非常有用。
- 阻止密码字段可编辑,强制生成随机密码。
如何使用
- 使用
composer require discoverydesign/filament-locksmith
安装此包 - 使用
use DiscoveryDesign\FilamentLocksmith\Forms\Components\PasswordInput
在您的 Filament 表单内导入此包。 - 使用
PasswordInput::make()
将PasswordInput
表单组件添加到您的表单中。 - 如果需要,使用
php artisan vendor:publish --tag=filament-locksmith-translations
发布翻译文件。
示例
基本示例
<?php namespace App\Filament\Resources; use DiscoveryDesign\FilamentLocksmith\Forms\Components\PasswordInput; // ... class UserResource extends Resource { // ... public static function form(Form $form): Form { return $form ->schema([ PasswordInput::make('password') ->required() ->generatable() ->friendly() ->copyable() ->revealable(), // ... ]); } // ... }
高级示例
PasswordInput::make('password') ->required() ->advanced() ->copyable() ->revealable(),
自定义生成器示例
PasswordInput::make('password') ->required() ->advanced() ->setGenerators([ new DiscoveryDesign\FilamentLocksmith\Generators\RandomGenerator, new DiscoveryDesign\FilamentLocksmith\Generators\MemorableGenerator ]) ->copyable() ->revealable(),
文档
->generatable($state)
描述
generatable
可以用来设置是否允许自动生成密码。默认情况下将生成一个32个字符的随机字符串。
参数
state
- (可选,布尔值) 如果密码应该可生成。
->friendly()
描述
friendly
是一个预加载的生成器,用于创建用户友好的密码。此密码由3个用“-”连接的单词组成。例如 time-shelf-bottle
->copyable($state)
描述
copyable
可以用来设置是否允许复制到剪贴板。
参数
state
- (可选,布尔值) 如果密码应该可复制。
->editable($state)
描述
editable
可以用来阻止密码字段被编辑。这通常与 ->generatable()
结合使用。
参数
state
- (可选,布尔值) 如果密码应该可编辑。
->generator($func)
描述
generator
允许您定义用于创建密码的自定义生成器。
参数
func
- (可选,闭包 | 布尔值) 用于生成密码的函数。此函数 必须 返回一个字符串。
->hashed($state)
描述
hashed
可以用来在存储之前对密码进行哈希处理。在大多数情况下,您应该使用模型上的类型代替。
参数
state
- (可选,布尔值) 如果密码应该被哈希。
->revealable($func)
描述
revealable
可以用来允许显示密码。这是 Filament 内置的显示功能。
参数
func
- (可选,闭包 | 布尔值) 如果密码应该可显示。如果传递了闭包,则此闭包应返回布尔值。
->advanced()
描述
advanced
将启用高级模式,允许用户配置他们的密码,并选择不同的密码类型。
参数
state
- (可选,布尔值) 如果密码应该被哈希。
->addGenerator($generator)
描述
addGenerator
可以用来向高级模式密码生成器添加生成器。您应该传递一个扩展 DiscoveryDesign\FilamentLocksmith\Generators\BaseGenerator
的类的实例。
参数
generator
- (类,扩展 BaseGenerator) 要添加的生成器。
->setGenerators($generators)
描述
setGenerators
将覆盖分配给此 PasswordInput
的所有现有生成器,并使用传递的生成器。您应该传递一个扩展 DiscoveryDesign\FilamentLocksmith\Generators\BaseGenerator
的类的实例数组。
参数
generators
- (数组) 要设置的生成器。
->getGenerators()
描述
getGenerators
可以用来获取所有当前生成器的数组。
创建生成器
如果您想要创建一个生成器,您应该首先创建一个新的类,该类继承自 DiscoveryDesign\FilamentLocksmith\Generators\BaseGenerator
。
在您的 __construct
方法中,应包含您想要用于生成密码的任何选项。建议为您的表单输入使用独特的名称。
《generate》函数应返回一个字符串,该字符串是密码。
<?php namespace App\Filament\Locksmith\Generators; use Filament\Forms; use DiscoveryDesign\FilamentLocksmith\Generators\BaseGenerator; use Illuminate\Support\Str; class MyCustomGenerator extends BaseGenerator { public string $name = 'My Custom Generator'; public function __construct() { $this->setOptions([ Forms\Components\TextInput::make('mygenerator_length') ->label('length') ->default(20) ->type('number') ->required() ]); } public function generate($get) { $length = $get('mygenerator_length'); return Str::password($length); } }
然后您可以使用 ->addGenerator(new MyCustomGenerator)
将此生成器添加到密码输入中。