dutchcodingcompany / filament-developer-logins
Add buttons to the login page of Filament to login as a specific user.
Requires
- php: ^8.1
- filament/filament: ^3.0
- spatie/laravel-package-tools: ^1.15.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.8
- larastan/larastan: ^2.9
- nunomaduro/collision: ^7.0|^8.1
- orchestra/testbench: ^8.0|^9.0
- phpunit/phpunit: ^10.0
- spatie/laravel-ray: ^1.26
README
This plugin allows you to enable one-click logins for your local Filament panels, which is useful when developing a Filament project with multiple users and various roles.
Installation
You can install the package via composer.
composer require dutchcodingcompany/filament-developer-logins
Usage
Register the plugin in the Filament panel provider (the default file is app/Providers/Filament/AdminPanelProvider.php
).
In the users
method you can define the users (note: the users must exist), the key is used as a label on the login button and the value is used to search the user in the database.
// ... ->plugins([ FilamentDeveloperLoginsPlugin::make() ->enabled() ->users([ 'Admin' => 'admin@example.com', 'User' => 'user@example.com', ]) ]);
The users() method can also be passed a closure to compute the users list at render time, for example from the database.
// ... FilamentDeveloperLoginsPlugin::make() ->users(fn () => User::pluck('email', 'name')->toArray()) ]);
Customization
enabled()
By default, the plugin is disabled. You can enable it by calling the enabled() method. I strongly suggest enabling this plugin only in the local environment. You can achieve this by using the app()->environment() method. Additionally, the enabled() method also accepts a closure if you wish to enable the plugin based on a custom condition.
Example:
// ... FilamentDeveloperLoginsPlugin::make() ->enabled(app()->environment('local'))
columns()
To customize the grid layout, you can use the columns() method. This method allows you to configure the grid layout based on your needs.
By default, the columns() method sets the grid to 2 columns. You can adjust the default column count or specify different column counts for different screen sizes by passing an array.
Example:
// ... FilamentDeveloperLoginsPlugin::make() ->columns() // default 2
or you can use an array like this
// ... FilamentDeveloperLoginsPlugin::make() ->columns([ 'sm' => 3, 'xl' => 6, '2xl' => 8, ])
switchable()
By default, a "Switch to" button is shown in the top right corner of the screen, so you can easily switch between the provided users. If you want to disable this feature, you can use the switchable() method.
// ... FilamentDeveloperLoginsPlugin::make() ->switchable(false) // This also accepts a closure.
column()
By default, the user column is set to email
. If you want to use a different column, you can use the column() method.
Example:
FilamentDeveloperLoginsPlugin::make() ->column('name')
modelClass()
By default, the model class is set to App\Models\User
. If you want to use a different model, you can use the modelClass() method.
Example:
FilamentDeveloperLoginsPlugin::make() ->modelClass(Admin::class)
redirectTo()
By default, the user will be redirected using the Filament::getUrl()
method, which directs them to the dashboard. In the case of multi-tenancy, the user will also be redirected to the correct tenant. If you prefer to use a different url, you can utilize the redirectTo() method.
FilamentDeveloperLoginsPlugin::make() ->redirectTo('/custom-url')
Since the routes are not yet registered when the plugin is created, you need to use a closure to redirect to a named route.
FilamentDeveloperLoginsPlugin::make() ->redirectTo(fn () => route('custom.route'))
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
License
The MIT License (MIT). Please see License File for more information.