patrickcurl/filament-auth
| Install | |
|---|---|
composer require patrickcurl/filament-auth |
|
| Latest Version: | v3.0.1 |
| PHP: | ^8.0 |
| License: | MIT |
| Last Updated: | Sep 29, 2022 |
| Links: | GitHub · Packagist |
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\HasRolestrait 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\Impersonateto 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.
Related Packages
With DadJokes every time you load your control panel you'll be greeted by an epi...
User & Role (via Spatie Roles/Permissions) Manager Resource For Filament Admin
A Filament plugin that makes table headers stick when scrolling down for better...