patrickcurl / filament-auth
Filament Admin 的用户和角色(通过 Spatie Roles/Permissions)管理资源,从 phpsa/filament-authentication 分支而来,增加了 Bouncer 作为权限选项。
Requires
- php: ^8.0
- filament/filament: ^v2.9.9
- lab404/laravel-impersonate: ^1.7
- laravel/framework: ^9.0
- spatie/laravel-package-tools: ^1.10
Requires (Dev)
- zvive/fixer: ^9.0
README
Filament 用户身份验证
使用 Spatie 的角色和权限,为 Filament Admin 提供用户资源
安装
您可以通过 composer 安装此包
composer require patrickcurl/filament-auth
并现在清除缓存
php artisan optimize:clear
并发布配置
php artisan vendor:publish --tag=filament-auth-config
并可选地发布视图/翻译
artisan vendor:publish --tag=filament-auth-views artisan vendor:publish --tag=filament-auth-translations
附加资源
Spatie Roles & Permissions
如果您尚未安装此包,请执行以下步骤
composer require spatie/laravel-permission
- 您应该使用以下命令发布迁移和 config/permission.php 配置文件
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" php artisan migrate
- 将
Spatie\Permission\Traits\HasRoles
特性添加到您的 Users 模型中,并在 User 模型中添加以下方法
public function canAccessFilament() : bool { // Change this per your requirements. return $this->hasRole('superadmin'); }
- 添加所需的角色和权限
更多请参阅:https://spatie.be/docs/laravel-permission/v5/introduction
Bouncer 角色/权限
如果您尚未安装此包,请执行以下步骤
- 您应该使用以下命令发布迁移和 config/permission.php 配置文件
php artisan vendor:publish --provider="Silber\Bouncer\BouncerServiceProvider" php artisan migrate
将以下方法添加到您的 User 模型中
public function canAccessFilament() : bool { // Change this per your requirements. return Bouncer::is($this)->a('superadmin'); }
已实现,但文档即将推出。
Laravel Impersonate
如果您尚未配置此包,它将由安装自动添加,请执行以下步骤
- 将特性
Lab404\Impersonate\Models\Impersonate
添加到您的 User 模型中。 - 设置您的权限:https://github.com/404labfr/laravel-impersonate#defining-impersonation-authorization
安全性
可以使用 Laravel Policies 保护角色和权限,创建您的策略并在 AuthServiceProvider 中注册它们
protected $policies = [ Role::class => RolePolicy::class, Permission::class => PermissionPolicy::class, CustomPage::class => CustomPagePolicy::class, SettingsPage::class => SettingsPagePolicy::class // 'App\Models\Model' => 'App\Policies\ModelPolicy', ];
我们有一个自定义页面特性:FilamentAuth\Traits\PagePolicyTrait
和一个 Spatie 设置页面特性 FilamentAuth\Traits\SettingsPage\PolicyTrait
,您可以将它们添加到您的页面/设置页面中。通过定义一个模型并将其与 viewAny($user)
方法映射,您可以定义是否在导航中显示页面。
小部件
默认情况下,LatestUsersWidget
会发布到您的仪表板,您可以通过编辑 filament-auth 配置文件中的配置来配置/禁用此功能
'Widgets' => [ 'LatesetUsers' => [ 'enabled' => true, 'limit' => 5, ], ],
请注意,如果存在策略,它也附加到 UserPolicy::viewAny 策略值
下一版本计划更新 enabled 以接受回调函数,以允许使用角色等
个人资料
当前认证用户的个人资料查看
扩展
扩展个人资料
<?php namespace App\Filament\Pages; use Filament\Pages\Page; use FilamentAuth\Pages\Profile as PagesProfile; class Profile extends PagesProfile {}
或视图:resources/views/vendor/filament-auth/filament/pages/profile.blade.php
(您可以发布现有的一个)
事件
FilamentAuth\Events\UserCreated
在通过资源创建用户时触发
FilamentAuth\Events\UserUpdated
在通过资源更新用户时触发
与其他包的集成
即将推出
变更日志
请参阅 CHANGELOG 以获取有关最近更改的更多信息。
致谢
- Phpsa 从此分支 fork,增加了 Bouncer。
- Patrick Curl 此包的维护者。
许可证
MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件。