patrickcurl / filament-auth
User & Role (via Spatie Roles/Permissions) Manager Resource For Filament Admin, forked from forked from phpsa/filament-authentication - added Bouncer as an option for permissions as well.
Fund package maintenance!
patrickcurl
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 User Authentication
User Resource For Filament Admin along with Roles & Permissions using Spatie
Installation
You can install the package via composer:
composer require patrickcurl/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
Additional Resources
Spatie Roles & Permissions
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
Bouncer Roles / Permissions
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.
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: 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.
Widgets
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
Profile view for currently authed user
Extending
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)
Events
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
Intergration with other packages
Comming soon
Changelog
Please see CHANGELOG for more information on what has changed recently.
Credits
- Phpsa Forked from this, added Bouncer.
- Patrick Curl Maintainer of this package.
License
The MIT License (MIT). Please see License File for more information.