versa / tenancy-extension
一个用于扩展 Laravel 的 Tenancy For Laravel 包功能的 Laravel 扩展包。
1.0.0
2023-03-13 12:32 UTC
Requires
- php: ^8.1
- laravel/framework: ^10.0
- league/flysystem-aws-s3-v3: ^3.0
- stancl/tenancy: ^3.7
README
这是一个简单的 Laravel 的 Tenancy 扩展包,它提供了一种简单的方式来管理每个租户的 AWS S3 存储桶。
安装
使用 composer 安装包
composer require versa/tenancy-extension
用法
1. 文件系统配置
确保您已为您的 S3 存储桶配置了文件系统。例如
文件: config/filesystems.php
's3' => [ 'driver' => 's3', 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'region' => env('AWS_DEFAULT_REGION'), 'bucket' => env('AWS_BUCKET'), 'url' => env('AWS_URL'), 'endpoint' => env('AWS_ENDPOINT'), 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false), ],
2. 租户配置
将 BucketsBootstrapper::class
添加到 bootstrappers
下的租户配置文件中。
文件: config/tenancy.php
'bootstrappers' => [ // ... Versa\TenancyExtension\Bootstrappers\BucketsBootstrapper::class, ],
请确保在 tenancy.filesystem.disks
配置中将 s3
行取消注释。
文件: config/tenancy.php
'filesystems' => [ 'suffix_base' => 'tenant', 'disks' => [ 'local', 'public', // 's3', // Make sure this stays commented ], ],
3. 作业管道配置
将 Versa\TenancyExtension\Jobs\CreateTenantBucket
和 Versa\TenancyExtension\Jobs\DeleteTenantBucket
添加到 JobPipeline::make()
。这将确保在租户创建或删除时创建和删除存储桶。
文件: app/Providers/TenancyServiceProviders.php
use Versa\TenancyExtension\Jobs\CreateTenantBucket; use Versa\TenancyExtension\Jobs\DeleteTenantBucket; // ... public function events(): array { return [ // ... Events\CreatingTenant::class => [], Events\TenantCreated::class => [ JobPipeline::make([ Jobs\CreateDatabase::class, Jobs\MigrateDatabase::class, Jobs\SeedDatabase::class, CreateTenantBucket::class, // <-- Add this line ])->send(function (Events\TenantCreated $event) { return $event->tenant; })->shouldBeQueued(false), ], // ... Events\TenantDeleted::class => [ JobPipeline::make([ Jobs\DeleteDatabase::class, DeleteTenantBucket::class, // <-- Add this line ])->send(function (Events\TenantDeleted $event) { return $event->tenant; })->shouldBeQueued(false), ], // ... ]; }
享受吧!😁