Manage your multi accounts inside your app using 1 table with multi auth and a lot of integrations
tomatophp/filament-accounts is a Laravel package for manage your multi accounts inside your app using 1 table with multi auth and a lot of integrations.
It currently has 72 GitHub stars and 8.976 downloads on Packagist (latest version 5.0.0).
Install it with composer require tomatophp/filament-accounts.
Discover more Laravel packages by tomatophp
or browse all Laravel packages to compare alternatives.
Last updated

Manage your multi accounts inside your app using 1 table with multi auth and a lot of integrations
[!CAUTION] Don't update to v2.3 if you are using v2.2 or less because you will lose some features but you can update and use this features from integrated packages.

you can use this package if you like to build a CRM or a multi-accounts app
| Package version | Filament | Laravel | PHP | |-----------------|----------|------------|------| | 5.x | 5.x | 12.x, 13.x | 8.2+ | | 4.x | 4.x | 11.x, 12.x | 8.2+ |
composer require tomatophp/filament-accounts:^5.0
after install your package please run this command
php artisan filament-accounts:install
if you are not using this package as a plugin please register the plugin on /app/Providers/Filament/AdminPanelProvider.php
->plugin(\TomatoPHP\FilamentAccounts\FilamentAccountsPlugin::make())
you can publish your account model to add other relations or implement some interfaces by using this command
php artisan vendor:publish --tag="filament-accounts-model"
now go to your filament-accounts.php config file and change the model value to the new one.
if you don't find it you can publish it
php artisan vendor:publish --tag="filament-accounts-config"
now you need to add a new guard to your config/auth.php like this (the impersonate action signs in with the accounts guard)
'guards' => [
// ...
'accounts' => [
'driver' => 'session',
'provider' => 'accounts',
],
],
'providers' => [
// ...
'accounts' => [
'driver' => 'eloquent',
'model' => \TomatoPHP\FilamentAccounts\Models\Account::class,
],
],
this plugin makes it easy to make a starting point for your app if this app has customers to manage
but here is the problem, every app has a different way of managing customers, so we built a Facade service to control the way you want to manage your customers
add this method to your plugin in AdminPanelProvider.php
->plugin(
\TomatoPHP\FilamentAccounts\FilamentAccountsPlugin::make()
->useAvatar()
)
just allow useResource->() on the plugin
->plugin(\TomatoPHP\FilamentAccounts\FilamentAccountsPlugin::make()
->useResource(false)
)
just allow ->useTypes() on the plugin, it adds a type field, column and filter to the resource and an "Accounts Types" page to manage them (powered by tomatophp/filament-types)
->plugin(\TomatoPHP\FilamentAccounts\FilamentAccountsPlugin::make()
->useTypes()
)
you can show or hide address field on the create or edit form by using this code
->plugin(\TomatoPHP\FilamentAccounts\FilamentAccountsPlugin::make()
->showAddressField()
)
you can show or hide type field on the create or edit form by using this code
->plugin(\TomatoPHP\FilamentAccounts\FilamentAccountsPlugin::make()
->showTypeField()
)
you can attach a new relation to the accounts relations manager by just passing the relation class to the facade service method
use TomatoPHP\FilamentAccounts\Facades\FilamentAccounts;
public function boot()
{
FilamentAccounts::register([
AccountOrdersRelationManager::make()
]);
}
now on your main panel provider add ->useExport() , ->useImport() to the plugin
->plugin(\TomatoPHP\FilamentAccounts\FilamentAccountsPlugin::make()
...
->useExport()
->useImport()
)

you can use the account column in any table by using this code
public static function table(Table $table): Table
{
return $table
->columns([
AccountColumn::make('account.id'),
]);
}
just pass the account id to the column
impersonation is powered by lab404/laravel-impersonate (installed with this package) and signs in with the accounts guard from the Add Accounts Guard section.
on your main panel provider add ->useImpersonate() , ->impersonateRedirect('/app') to the plugin
->plugin(\TomatoPHP\FilamentAccounts\FilamentAccountsPlugin::make()
...
->useImpersonate()
->impersonateRedirect('/app')
)
now clear your config
php artisan config:cache
for more information check the Filament Impersonate
if you like to run PEST testing just use this command
composer test
if you like to fix the code style just use this command
composer format
if you like to check the code by PHPStan just use this command
composer analyse
Checkout our Awesome TomatoPHP