tomatophp/filament-tenancy

FilamentPHP的多数据库租户集成

v1.0.4 2024-09-18 09:22 UTC

This package is auto-updated.

Last update: 2024-09-18 09:22:43 UTC


README

Screenshot

Filament租户

Latest Stable Version License Downloads

FilamentPHP的多数据库租户集成

截图

Tenants Create Edit Password

功能

  • 多数据库
  • 创建租户资源
  • 同步租户资源
  • 密码更改
  • 租户模拟
  • 共享租户数据
  • 为租户定制主题
  • 为注册新租户的Livewire组件

安装

composer require tomatophp/filament-tenancy

安装您的包后,请运行以下命令

php artisan filament-tenancy:install

在您的.env文件中添加以下内容

CENTRAL_DOMAIN=tomatophp.test

其中tomatophp.test是您的中心域名,并确保您添加了一个根用户或具有创建数据库权限的用户,然后在您的主中心面板中添加此插件

use TomatoPHP\FilamentTenancy\FilamentTenancyPlugin;

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

现在您需要为租户应用程序创建一个面板

php artisan filament:panel

并将名称设置为->panel('app'),在您的租户应用程序面板中添加此插件

use TomatoPHP\FilamentTenancy\FilamentTenancyAppPlugin;

->plugin(FilamentTenancyAppPlugin::make())

现在在您的config\database.php中添加以下代码

    ...
    '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'),
            ]) : [],
        ],
        ...
    ],  

现在运行config:cache

php artisan config:cache

在您的bootstrap\app.php中添加以下中间件

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

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

允许模拟

您可以通过在插件中使用此方法一键允许租户面板的模拟

use TomatoPHP\FilamentTenancy\FilamentTenancyPlugin;

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

发布资源

您可以使用以下命令发布配置文件

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

您可以使用以下命令发布视图文件

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

您可以使用以下命令发布语言文件

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

您可以使用以下命令发布迁移文件

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

其他Filament包

查看我们的令人惊叹的TomatoPHP