tomatophp / filament-accounts
Manage your multi accounts inside your app using 1 table with multi auth and a lot of integrations
Fund package maintenance!
3x1io
Installs: 2 758
Dependents: 6
Suggesters: 0
Security: 0
Stars: 24
Watchers: 2
Forks: 6
Open Issues: 0
Requires
- php: ^8.1|^8.2
- filament/filament: ^3.2
- filament/notifications: ^3.2
- filament/spatie-laravel-media-library-plugin: ^3.2
- maatwebsite/excel: ^3.1
- tomatophp/console-helpers: ^1.1
- tomatophp/filament-types: ^2.0
Requires (Dev)
- laravel/pint: ^1.18
- livewire/livewire: ^2.10|^3.0
- nunomaduro/larastan: ^2.9
- orchestra/testbench: ^9.5
- pestphp/pest: ^2.36
- pestphp/pest-plugin-laravel: ^2.4
- pestphp/pest-plugin-livewire: ^2.1
- phpstan/extension-installer: ^1.4
- phpstan/phpstan-deprecation-rules: ^1.2
- phpstan/phpstan-phpunit: ^1.4
README
Filament Accounts Builder
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.
Screenshots
Features
- 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
Use Case
you can use this package if you like to build a CRM or a multi-accounts app
Installation
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())
Publish Account Model
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"
Add Accounts Guard
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, ];
Usage
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
Use Avatar
add this method to your plugin in AdminPanelProvider.php
->plugin( \TomatoPHP\FilamentAccounts\FilamentAccountsPlugin::make() ->useAvatar() )
Use Filament Types
just allow ->useTypes()
on the plugin
->plugin(\TomatoPHP\FilamentAccounts\FilamentAccountsPlugin::make() ->useTypes() )
Show Address Field
you can show or hide address field on the create or edit form by using this code
->plugin(\TomatoPHP\FilamentAccounts\FilamentAccountsPlugin::make() ->showAddressField() )
Show Type Field
you can show or hide type field on the create or edit form by using this code
->plugin(\TomatoPHP\FilamentAccounts\FilamentAccountsPlugin::make() ->showTypeField() )
Attach Relation To Accounts
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() ]); }
Use Export & Import Actions
now on your main panel provider add ->useExport()
, ->useImport()
to the plugin
->plugin(\TomatoPHP\FilamentAccounts\FilamentAccountsPlugin::make() ... ->useExport() ->useImport() )
Use Account Column
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
Use Filament Impersonate
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
Testing
if you like to run PEST
testing just use this command
composer test
Code Style
if you like to fix the code style just use this command
composer format
PHPStan
if you like to check the code by PHPStan
just use this command
composer analyse
Other Filament Packages
Checkout our Awesome TomatoPHP