discoverydesign/filament-locksmith

1.1.0 2024-09-01 17:51 UTC

This package is auto-updated.

Last update: 2024-09-03 08:35:36 UTC


README

🔒 Filament PHP 中轻松创建密码 🤫

Basic Example

Packagist Version Total Downloads

此包允许您为 Filament PHP 添加一个功能丰富的密码输入/字段。

https://packagist.org.cn/packages/discoverydesign/filament-locksmith

特性

  • 能够复制密码
  • 能够自动生成密码。默认为32个随机字符字符串。
  • 用户友好的预设生成器,创建3词组合密码。例如:elephant-plant-photo
  • 将密码存储到数据库时自动进行哈希处理。当无法使用类型时非常有用。
  • 阻止密码字段可编辑,强制生成随机密码。

如何使用

  1. 使用 composer require discoverydesign/filament-locksmith 安装此包
  2. 使用 use DiscoveryDesign\FilamentLocksmith\Forms\Components\PasswordInput 在您的 Filament 表单内导入此包。
  3. 使用 PasswordInput::make()PasswordInput 表单组件添加到您的表单中。
  4. 如果需要,使用 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) 将此生成器添加到密码输入中。

作者

🚀 Discovery Design