Integration with Spatie packages
laravel-activitylog
For the tenant app:
- Set the
database_connection
key inconfig/activitylog.php
tonull
. This makes activitylog use the default connection. - Publish the migrations and move them to
database/migrations/tenant
. (And, of course, don't forget to runartisan tenants:migrate
.)
For the central app:
- Set the
database_connection
key inconfig/activitylog.php
to the name of your central database connection.
laravel-permission
Install the package like usual, but publish the migrations and move them to migrations/tenant
:
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="migrations"
mv database/migrations/*_create_permission_tables.php database/migrations/tenant
Then add this to your AppServiceProvider::boot()
method:
tenancy()->hook('bootstrapped', function (TenantManager $tenantManager) {
\Spatie\Permission\PermissionRegistrar::$cacheKey = 'spatie.permission.cache.tenant.' . $tenantManager->getTenant('id');
});
The reason for this is that spatie/laravel-permission caches permissions & roles to save DB queries, which means that we need to separate the permission cache by tenant.