mstfkhazaal / filament-jet
这是我提供的 filament-jet 包
Requires
- php: ^8.0
- abanoubnassem/filament-grecaptcha-field: ^0.0.5
- bacon/bacon-qr-code: ^2.0
- filament/filament: ^v2.17.22
- illuminate/contracts: ^8.0|^9.0|^10.0
- jenssegers/agent: ^2.6
- mstfkhazaal/filament-password-reveal: dev-main
- mstfkhazaal/filament-radio-button-field: ^1.0
- pragmarx/google2fa: ^7.0|^8.0
- spatie/laravel-package-tools: ^1.14
- spatie/laravel-personal-data-export: ^4.2
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^5.0|^6.0
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^6.0|^7.0|^8.0
- pestphp/pest: ^1.21
- pestphp/pest-plugin-laravel: ^1.1
- pestphp/pest-plugin-livewire: ^1.0
- pestphp/pest-plugin-parallel: ^0.3
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.5
- spatie/laravel-ray: ^1.26
README
Filament Jet 是一个用于 Filament 的身份验证入门套件,为您的下一个 Filament 应用程序提供完美的起点。Filament Jet 提供了应用程序的登录、注册、电子邮件验证、两步验证、会话管理、个人数据导出、通过 Laravel Sanctum 的 API 以及可选的团队管理功能。
安装
警告 尝试将 Filament Jet 安装到现有的 Filament 应用程序中可能会导致意外的行为和问题。
您可以通过 composer 安装此包
composer require mstfkhazaal/filament_jetstream
安装 Filament Jet 包后,您可以执行以下 Artisan 命令。
php artisan filament-jet:install
此外,您可以使用 --teams
开关来启用团队支持。
安装 Filament Jet 后,您应该安装和构建您的 NPM 依赖项,并迁移您的数据库
npm run dev npm run build php artisan migrate
可选地,您可以使用以下命令发布视图
php artisan vendor:publish --tag="filament-jet-views"
更新 config/filament.php
以指向 Filament Jet 的 Login::class
。
'auth' => [ 'guard' => env('FILAMENT_AUTH_GUARD', 'web'), 'pages' => [ 'login' => \Mstfkhazaal\FilamentJetstream\Filament\Pages\Auth\Login::class, ], ],
您可能想要更改身份验证卡的尺寸。
use Mstfkhazaal\FilamentJetstream\Features; 'features' => [ Features::login([ 'card_width' => 'md', ]), ],
显示/隐藏品牌。
use Mstfkhazaal\FilamentJetstream\Features; 'features' => [ Features::login([ 'has_brand' => true, ]), ],
完整的登录配置。
use Mstfkhazaal\FilamentJetstream\Features; 'features' => [ Features::login([ 'card_width' => 'md', 'has_brand' => true, 'rate_limiting' => [ 'enabled' => true, 'limit' => 5, ], 'pipelines' => [], ]), ],
个人资料管理
Filament Jet 的个人资料管理功能可通过用户在右上角的用户资料导航下拉菜单中访问。Filament Jet 动作允许用户更新他们的姓名、电子邮件地址,以及可选的个人资料照片。
您可能想要通过添加注释来禁用 updateProfileInformation
功能。
use Mstfkhazaal\FilamentJetstream\Features; 'features' => [ // Features::updateProfileInformation(), ],
启用个人资料照片
如果您希望允许用户上传自定义个人资料照片,您必须在应用程序的 config/filament-jet.php
配置文件中启用此功能。要启用功能,只需取消注释此文件中 features
配置项对应的特征条目即可。
use Mstfkhazaal\FilamentJetstream\Features; 'features' => [ Features::profilePhotos(), ],
有关更多信息,请参阅以下链接:Jetstream 个人资料管理
密码更新
您可能想要通过添加注释来禁用 updatePasswords
功能。
use Mstfkhazaal\FilamentJetstream\Features; 'features' => [ // Features::updatePasswords([ // ... // ]), ],
您可能希望在不填写当前密码的情况下更新密码。
use Mstfkhazaal\FilamentJetstream\Features; 'features' => [ Features::updatePasswords([ 'askCurrentPassword' => false, ]), ],
两步验证
当用户为其账户启用两步验证时,他们应使用免费 TOTP 验证器应用程序(如 Google 验证器)扫描提供的 QR 码。此外,他们应将列出的恢复代码存储在安全的密码管理器(如 1Password)中。
use Mstfkhazaal\FilamentJetstream\Features; 'features' => [ Features::twoFactorAuthentication([ 'authentication' => [ 'session_prefix' => 'filament.', 'card_width' => 'md', 'has_brand' => true, 'rate_limiting' => [ 'enabled' => true, 'limit' => 5, ], ], 'confirm' => true, 'toggleRecoveryCodesVisibilityWithConfirmPassword' => true, // 'window' => 0, ]), ],
您可能想要通过添加注释来禁用 twoFactorAuthentication
功能。
use Mstfkhazaal\FilamentJetstream\Features; 'features' => [ // Features::twoFactorAuthentication([ // ... // ]), ],
您可能希望在不进行密码确认的情况下切换恢复代码的可见性
use Mstfkhazaal\FilamentJetstream\Features; 'features' => [ Features::twoFactorAuthentication([ // ... 'toggleRecoveryCodesVisibilityWithConfirmPassword' => false, ]), ],
浏览器会话
此功能利用 Laravel 内置的 Illuminate\Session\Middleware\AuthenticateSession
中间件安全地注销作为当前用户认证的其他浏览器会话。
注意 要在 Filament Jet 中使用浏览器会话管理,请确保您的会话配置的
driver
(或SESSION_DRIVER
环境变量)设置为 'database'。
您可能想要通过添加注释来禁用 logoutOtherBrowserSessions
功能。
use Mstfkhazaal\FilamentJetstream\Features; 'features' => [ // Features::logoutOtherBrowserSessions(), ],
删除账户
您可能想要通过添加注释来禁用 accountDeletion
功能。
use Mstfkhazaal\FilamentJetstream\Features; 'features' => [ // Features::accountDeletion(), ],
下载您的信息
您可以从个人资料中下载您的信息副本。一旦您的文件可用,您就可以将其下载到您的设备。
您可能希望通过添加注释来禁用 personalDataExport
功能。
use Mstfkhazaal\FilamentJetstream\Features; 'features' => [ // Features::personalDataExport([ // 'export-name' => 'personal-data', // 'add' => [ // ['nameInDownload' => '', 'content' => []] // ], // 'add-files' => [ // ['pathToFile' => '', 'diskName' => '', 'directory' => ''] // ], // ]), ],
add
:第一个参数是zip文件内文件的名称。第二个参数是应放入该文件中的内容。如果您在这里传递一个数组,我们将将其编码为JSON。add-file
:第一个参数是要复制到zip文件中的文件的路径。您还可以将磁盘名称作为第二个参数添加。
export-name
将仅影响作为响应发送给用户的下载名称,而不是磁盘上存储的zip文件的名称。
这使用了 spatie/laravel-personal-data-export 包。点击链接获取更多信息。
团队
如果您使用 --teams
选项安装了 Filament Jet,则您的应用程序将构建以支持团队创建和管理。
创建团队
团队设置
禁用团队功能
如果您想禁用团队功能,请从 config/filament-jet.php
配置中删除此行。
use Mstfkhazaal\FilamentJetstream\Features; 'features' => [ Features::teams([ 'invitations' => false, 'middleware' => [], ]), ],
如果您想添加其他中间件,请填写中间件数组。
点击链接获取更多信息:Jetstream Teams
邀请
默认情况下,Filament Jet将简单地添加您指定的任何现有应用程序用户到您的团队。要开始,在启用应用程序的“teams”功能时传递 invitations
选项。这可以通过修改应用程序的 config/filament-jet.php
配置文件的 features
数组来完成。
点击链接获取更多信息:Jetstream Teams
API
Laravel Sanctum 为单页应用(SPA)、移动应用和简单的基于令牌的API提供轻量级认证系统。Sanctum 允许您的应用程序中的每个用户为他们自己的帐户生成多个API令牌。这些令牌可以授予能力/权限,指定令牌可以执行哪些操作。
启用API支持
如果您的应用程序将提供第三方可能消费的API,您必须启用 Filament Jet 的 API 功能。要这样做,您应该在应用程序的 config/filament-jet.php
配置文件的 features
配置选项中取消注释相关条目
use Mstfkhazaal\FilamentJetstream\Features; 'features' => [ Features::api(), ],
点击链接获取更多信息:Jetstream API
认证
注册
要求接受服务条款/隐私政策批准
许多应用程序要求用户在注册期间接受其服务条款/隐私政策。Filament Jet 允许您轻松地为您的应用程序启用此要求,并提供使用Markdown编写这些文档的便捷方式。
要开始,请启用应用程序的 config/filament-jet.php
配置文件中的此功能。
use Mstfkhazaal\FilamentJetstream\Features; 'features' => [ Features::termsAndPrivacyPolicy(), ],
接下来,您可以通过修改应用程序的 resources/markdown/terms.md
和 resources/markdown/policy.md
文件来编写您的服务条款/隐私政策文档。
禁用注册功能
您可能希望通过添加注释来禁用 registration
功能。
use Mstfkhazaal\FilamentJetstream\Features; 'features' => [ // Features::registration([ // 'page' => \Mstfkhazaal\FilamentJetstream\Filament\Pages\Auth\Register::class, // 'terms_of_service' => \Mstfkhazaal\FilamentJetstream\Http\Livewire\TermsOfService::class, // 'privacy_policy' => \Mstfkhazaal\FilamentJetstream\Http\Livewire\PrivacyPolicy::class, // 'card_width' => 'md', // 'has_brand' => true, // 'rate_limiting' => [ // 'enabled' => true, // 'limit' => 5, // ], // ]), ],
登录
重置密码
禁用重置密码功能
您可能希望通过添加注释来禁用 resetPasswords
功能。
use Mstfkhazaal\FilamentJetstream\Features; 'features' => [ // Features::resetPasswords([ // 'request' => [ // 'page' => \Mstfkhazaal\FilamentJetstream\Filament\Pages\Auth\PasswordReset\RequestPasswordReset::class, // 'card_width' => 'md', // 'has_brand' => true, // 'rate_limiting' => [ // 'enabled' => true, // 'limit' => 5, // ], // ], // 'reset' => [ // 'page' => \Mstfkhazaal\FilamentJetstream\Filament\Pages\Auth\PasswordReset\ResetPassword::class, // 'card_width' => 'md', // 'has_brand' => true, // 'rate_limiting' => [ // 'enabled' => true, // 'limit' => 5, // ], // ], // ]), ],
双因素挑战
扩展和覆盖组件
认证流程中的所有页面都是全页 Livewire 组件,用于与 Filament Forms 一起使用。因此,您可以将任何组件轻松扩展以添加您自己的字段和操作。
您可能想要更改注册组件
use Mstfkhazaal\FilamentJetstream\Features; 'features' => [ Features::registration([ 'page' => \Mstfkhazaal\FilamentJetstream\Filament\Pages\Auth\Register::class, 'terms_of_service' => \Mstfkhazaal\FilamentJetstream\Http\Livewire\TermsOfService::class, 'privacy_policy' => \Mstfkhazaal\FilamentJetstream\Http\Livewire\PrivacyPolicy::class, 'card_width' => 'md', 'has_brand' => true, 'rate_limiting' => [ 'enabled' => true, 'limit' => 5 ], ]), ],
您可能想要更改服务条款或隐私政策组件
use Mstfkhazaal\FilamentJetstream\Features; 'features' => [ Features::registration([ // ... 'terms_of_service' => YourTermsOfServiceComponent::class, 'privacy_policy' => YourPrivacyPolicyComponent::class, // ... ]), ],
您可能想要更改重置密码页面
use Mstfkhazaal\FilamentJetstream\Features; 'features' => [ Features::resetPasswords([ 'request' => [ 'page' => \Mstfkhazaal\FilamentJetstream\Filament\Pages\Auth\PasswordReset\RequestPasswordReset::class, // ... ], 'reset' => [ 'page' => \Mstfkhazaal\FilamentJetstream\Filament\Pages\Auth\PasswordReset\ResetPassword::class, // ... ], ]), ],
电子邮件验证
要开始,请验证您的 App\Models\User
模型实现了 Illuminate\Contracts\Auth\MustVerifyEmail
接口
use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable implements MustVerifyEmail { // ... }
Filament Jet 包含了要求新注册用户验证其电子邮件地址的功能。但是,默认情况下,此功能是禁用的。要启用此功能,您应该在应用程序的 config/filament-jet.php
配置文件中取消注释 features
配置项中的相关条目
use Mstfkhazaal\FilamentJetstream\Features; 'features' => [ Features::emailVerification([ // ... ]), ],
您可能想要更改验证检查页面或电子邮件验证控制器
use Mstfkhazaal\FilamentJetstream\Features; 'features' => [ Features::emailVerification([ 'page' => \Mstfkhazaal\FilamentJetstream\Filament\Pages\Auth\EmailVerification\EmailVerificationPrompt::class, 'controller' => \Mstfkhazaal\FilamentJetstream\Http\Controllers\Auth\EmailVerificationController::class, 'card_width' => 'md', 'has_brand' => true, 'rate_limiting' => [ 'enabled' => true, 'limit' => 5 ], ]), ],
用法
filament-jet
配置文件包含一个 features
配置数组,您可以在其中启用或禁用所需的功能。
测试
composer test
变更日志
有关最近更改的更多信息,请参阅 变更日志
贡献
有关详细信息,请参阅 贡献指南
安全漏洞
有关如何报告安全漏洞的详细信息,请参阅 我们的安全策略
鸣谢
许可
MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件