User Resource For Filament Admin along with Roles & Permissions using Spatie
You can install the package via composer:
composer require phpsa/filament-authentication
and now clear cache
php artisan optimize:clear
and publish config
php artisan vendor:publish --tag=filament-authentication-config
and optionally views / translations
artisan vendor:publish --tag=filament-authentication-views
artisan vendor:publish --tag=filament-authentication-translations
in the panel file you are using: you will need to do the follwing:
- add the resources
public function panel(Panel $panel): Panel
{
return $panel
->default()
->id('admin')
->path('/admin')
...
->profile() //to publish filaments one :-)
->resources(
FilamentAuthentication::resources()
)
->widgets([
...
LatestUsersWidget::make(['limit' => 5, 'paginate' => true])
If you have not yet configured this package it is automatically added by this installer, run the following steps:
- You should publish the migration and the config/permission.php config file with:
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
php artisan migrate
-
Add the
Spatie\Permission\Traits\HasRoles
trait to your Users model -
Add Roles & Permissions as required
For more see: https://spatie.be/docs/laravel-permission/v5/introduction
If you have not configured this package it is automatically added by this install, run the following steps:
- Add the trait
Lab404\Impersonate\Models\Impersonate
to your User model. - Setup your permissions: https://github.com/404labfr/laravel-impersonate#defining-impersonation-authorization
Roles & Permissions can be secured using Laravel Policies, create your policies and register then in the 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',
];
We have a Custom Page Trait: Phpsa\FilamentAuthentication\Traits\PagePolicyTrait
and a Spatie Settings Page Trait Phpsa\FilamentAuthentication\Traits\SettingsPage\PolicyTrait
that you can add to your pages / settings pages.
By defining a model and mapping it with a viewAny($user)
method you can define per policies whether or not to show the page in navigation.
LatestUsersWidget
can be added to your dashboard by adding it to your panel widgets area..
LatestUsersWidget::class
or
LatestUsersWidget::make(['limit' => 5, 'paginate' => true])
Note that it is also attached to the UserPolicy::viewAny policy value if the policy exists
Phpsa\FilamentAuthentication\Events\UserCreated
is triggered when a user is created via the Resource
Phpsa\FilamentAuthentication\Events\UserUpdated
is triggered when a user is updated via the Resource
** Comming soon **
Please see CHANGELOG for more information on what has changed recently.
The MIT License (MIT). Please see License File for more information.