phpsa / filament-authentication
User & Role (via Spatie Roles/Permissions) Manager Resource For Filament Admin
Fund package maintenance!
phpsa
Installs: 24 451
Dependents: 0
Suggesters: 0
Security: 0
Stars: 96
Watchers: 9
Forks: 23
Open Issues: 4
Requires
- php: ^8.0
- filament/filament: ^3.0
- lab404/laravel-impersonate: ^1.7
- spatie/laravel-package-tools: ^1.13
- spatie/laravel-permission: ^5.5|^6.0
Requires (Dev)
- laravel/pint: ^1.2
- dev-main
- v4.0.0
- v3.2.1
- v3.2.0
- v3.1.0
- v3.0.0
- 2.x-dev
- v2.4.2
- v2.4.1
- v2.4.0
- v2.3.0
- v2.2.1
- v2.2.0
- v2.1.2
- v2.1.1
- v2.1.0
- v2.1.0-beta.2
- v2.1.0-beta.1
- v2.0.0
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.1
- v1.0.0
- dev-18-impersonate-button-not-translated-in-default-user-view
- dev-beta
- dev-callback-for-widget-enabled
- dev-2-custom-userresource
This package is auto-updated.
Last update: 2024-04-18 02:04:40 UTC
README
Filament User Authentication
User Resource For Filament Admin along with Roles & Permissions using Spatie
Installation
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])
Additional Resources:
Spatie Roles & Permissions
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
Laravel Impersonate
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
Security
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.
Widgets
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
Events
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
Intergration with other packages:
** Comming soon **
Changelog
Please see CHANGELOG for more information on what has changed recently.
Credits
License
The MIT License (MIT). Please see License File for more information.