mirror of
https://github.com/stancl/tenancy-docs.git
synced 2025-12-12 10:14:03 +00:00
* Update spatie.blade.md * Add markdown style * Use "For example" instead of "E.g." Co-authored-by: Samuel Štancl <samuel.stancl@gmail.com> * Update note * Minor fix * Rephrase ActivityLog note Co-authored-by: Samuel Štancl <samuel.stancl@gmail.com>
1.8 KiB
1.8 KiB
| title | extends | section |
|---|---|---|
| Integration with Spatie packages | _layouts.documentation | content |
Integration with Spatie packages
laravel-activitylog
Note: The package requires logged models to have integer IDs. We recommend extra security measures when using integer IDs for tenants. Because the IDs become enumerable, they get vulnerable to enumeration attacks (which UUIDs are safe against). For example, to use the LogsActivity trait on the Tenant model, modify the model to have an integer ID.
For the tenant app:
- Set the
database_connectionkey inconfig/activitylog.phptonull. 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_connectionkey inconfig/activitylog.phpto 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:
Event::listen(TenancyBootstrapped::class, function (TenancyBootstrapped $event) {
\Spatie\Permission\PermissionRegistrar::$cacheKey = 'spatie.permission.cache.tenant.' . $event->tenancy->tenant->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.