Accounts Builder plugin screenshot
Dark mode ready
Multilingual support
Supports v5.x

Accounts Builder

Full accounts manager with API/Notifications/Contacts to manage your contacts and accounts

Tags: Panel Authentication Panels
Supported versions:
3.x
Fady Mondy avatar Author: Fady Mondy

Documentation

Screenshot

Dependabot Updates PHP Code Styling Tests Latest Stable Version License Downloads

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

Accounts List Change Password Send Notifications Edit Account

#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()
)

#Hide Resource

just allow useResource->() on the plugin

->plugin(\TomatoPHP\FilamentAccounts\FilamentAccountsPlugin::make()
    ->useResource(false)
)

#Use Filament Types

just allow ->useResource() on the plugin

->plugin(\TomatoPHP\FilamentAccounts\FilamentAccountsPlugin::make()
    ->useResource()
)

#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

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