zvive / filament-auth
Filament管理员用户和角色(通过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管理员用户资源
安装
您可以通过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角色和权限
如果您尚未安装此软件包,请按照以下步骤操作
composer require spatie/laravel-permission
- 您应该使用以下命令发布迁移和config/permission.php配置文件
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
php artisan migrate
- 将Spatie\Permission\Traits\HasRoles特性添加到您的用户模型中,并在用户模型中添加以下方法
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
将以下方法添加到您的用户模型中
public function canAccessFilament() : bool { // Change this per your requirements. return Bouncer::is($this)->a('superadmin'); }
已实现,但文档即将推出。
Laravel Impersonate
如果您尚未配置此软件包,它将在此安装过程中自动添加,请按照以下步骤操作
- 将特性
Lab404\Impersonate\Models\Impersonate
添加到您的用户模型中。 - 设置您的权限:https://github.com/404labfr/laravel-impersonate#defining-impersonation-authorization
安全性
可以使用Laravel策略来保护角色和权限,创建您的策略并在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策略值
在下一个版本中计划将启用更新为接受回调函数,以允许角色等
个人资料
当前认证用户的配置视图
扩展
扩展配置
<?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 从这里分支出来,增加了Bouncer。
- Patrick Curl 此包的维护者。
许可
MIT 许可证(MIT)。请参阅 许可文件 以获取更多信息。