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.
- Accounts Manager
- Account Types
not tested
- Account Login By
not tested
- Account Active/Block
not tested
- Account Avatar
not tested
- Account Impersonate Integration
not tested
- Account Table Column
not tested
- Export
not tested
- Import
not tested
- Account Filament Alerts Integration
- Account Teams
- Google Contacts Integrations
you can use this package if you like to build a CRM or a multi-accounts app
composer require tomatophp/filament-accounts
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 auth.php config like this
<?php
return [
/*
* Features of Tomato CRM
*
* accounts: Enable/Disable Accounts Feature
*/
"features" => [
"notifications" => false,
"loginBy" => false,
"avatar" => false,
"types" => false,
"teams" => false,
"impersonate" => [
'active'=> false,
'redirect' => '/app',
],
],
/*
* Accounts Configurations
*
* login_by: Login By Phone or Email
*/
"login_by" => "email",
/*
* Accounts Configurations
*
* model: User Model Class
*/
"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 ->useTypes()
on the plugin
->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
you can use the impersonate to impersonate the user by install it first
composer require stechstudio/filament-impersonate
now 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