Tenancy Multi-database

Tenancy multi-database integration for FilamentPHP

Screenshot

Filament Tenancy

Latest Stable Version License Downloads

Tenancy multi-database integration for FilamentPHP

Screenshots

Tenants Create Edit Password

Features

  • Multi Database
  • Create Tenant Resource
  • Sync Tenant Resource
  • Password Change
  • Tenant Impersonate
  • Share Tenant Data
  • Custom Theme For Tenant
  • Livewire Component For Register New Tenant

Installation

composer require tomatophp/filament-tenancy

after install your package please run this command

php artisan filament-tenancy:install

in your .env make sure you add a root user or a user have a permission to create database, then in your main central panel add this plugin

use Tomatophp\FilamentTenancy\FilamentTenancyPlugin;

->plugin(FilamentTenancyPlugin::make()->panel('app'))

now you need to create a panel for tenancy app

php artisan filament:panel

and make the name same as ->panel('app'), in your tenancy app panel add this plugin


use TomatoPHP\FilamentTenancy\FilamentTenancyAppPlugin;

->plugin(FilamentTenancyAppPlugin::make())

now on your config\database.php add this code

    ...
    'connections' => [
        'dynamic' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],
        ...
    ],  

now run config:cache

php artisan config:cache

on your bootstrap\app.php add this middleware

use Stancl\Tenancy\Middleware\InitializeTenancyByDomain;
use Stancl\Tenancy\Middleware\InitializeTenancyBySubdomain;

->withMiddleware(function (Middleware $middleware) {
    $middleware->group('universal', [
        InitializeTenancyByDomain::class,
        InitializeTenancyBySubdomain::class,
    ]);
})

Allow Impersonate

you can allow impersonate to tanent panel with 1 click by use this method on your plugin


use TomatoPHP\FilamentTenancy\FilamentTenancyPlugin;

->plugin(
    FilamentTenancyPlugin::make()
        ->panel('app')
        ->allowImpersonate()
)

Publish Assets

you can publish config file by use this command

php artisan vendor:publish --tag="filament-tenancy-config"

you can publish views file by use this command

php artisan vendor:publish --tag="filament-tenancy-views"

you can publish languages file by use this command

php artisan vendor:publish --tag="filament-tenancy-lang"

you can publish migrations file by use this command

php artisan vendor:publish --tag="filament-tenancy-migrations"

Support

you can join our discord server to get support TomatoPHP

Docs

you can check docs of this package on Docs

Changelog

Please see CHANGELOG for more information on what has changed recently.

Security

Please see SECURITY for more information about security.

Credits

License

The MIT License (MIT). Please see License File for more information.

Share To Social Networks