User Resource For Filament Admin along with Roles & Permissions using Spatie
You can install the package via composer:
composer require zvive/filament-auth
and now clear cache
php artisan optimize:clear
and publish config
php artisan vendor:publish --tag=filament-auth-config
and optionally views / translations
artisan vendor:publish --tag=filament-auth-views
artisan vendor:publish --tag=filament-auth-translations
If you have not yet installed this package it run the following steps:
composer require spatie/laravel-permission
- 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 Also add the following method to your User Model:
public function canAccessFilament() : bool
{
// Change this per your requirements.
return $this->hasRole('superadmin');
}
- Add Roles & Permissions as required
For more see: https://spatie.be/docs/laravel-permission/v5/introduction
If you have not yet installed this package it run the following steps:
- You should publish the migration and the config/permission.php config file with:
php artisan vendor:publish --provider="Silber\Bouncer\BouncerServiceProvider"
php artisan migrate
Add the following method to your User model :
public function canAccessFilament() : bool
{
// Change this per your requirements.
return Bouncer::is($this)->a('superadmin');
}
Implemented, but docs coming soon.
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: FilamentAuth\Traits\PagePolicyTrait
and a Spatie Settings Page Trait FilamentAuth\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
is by default published to your dashboard, this can be configured / disabled by editing the config in the filament-auth config file:
'Widgets' => [
'LatesetUsers' => [
'enabled' => true,
'limit' => 5,
],
],
Note that it is also attached to the UserPolicy::viewAny policy value if the policy exists
--It is planned to update the enabled to accept a callback function to allow for roles etc in the next version--
Profile view for currently authed user
Extend Profile:
<?php
namespace App\Filament\Pages;
use Filament\Pages\Page;
use FilamentAuth\Pages\Profile as PagesProfile;
class Profile extends PagesProfile
{}
or the view: resources/views/vendor/filament-auth/filament/pages/profile.blade.php
(you can publish existing one)
FilamentAuth\Events\UserCreated
is triggered when a user is created via the Resource
FilamentAuth\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.
- Phpsa Forked from this, added Bouncer.
- Patrick Curl / Zvive Maintainer of this package.
The MIT License (MIT). Please see License File for more information.