Обеспечение мультиарендности (multitenancy) на поддоменах в Laravel
Romega Digital анонсировали пакет, во многом упрощающий создание множественной аренды на поддоменах в приложениях Laravel:
Этот пакет предназначен для быстрого и простого добавления нескольких арендаторов в вашем приложение на Laravel. Он сам создает модели арендаторов и и задает отношения между ними. Пакет идентифицирует входящий трафик по поддомену и находит соответствующего арендатора в таблице Tenant. Если арендатор не найден или пользователь не связан с конкретным поддоменом, запрос выдает 403 ошибку.
Пакет Remega обеспечивает поддержку моделей для нескольких арендаторов с помощью параметра HasTenants , а также использует пакет разрешений Spatie для дополнительной функциональности.
Подробнее: два лучших пакета Laravel для управления ролями / разрешениями
Пример исполнения из readme:
use Spatie\Permission\Traits\HasRoles;
use RomegaDigital\Multitenancy\Traits\HasTenants;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use HasTenants, HasRoles; // ...
}Указав параметр HasTenants вы можете получить пользователей, связанных с моделью арендатора:
User::tenants()->get()
И, наконец, код создания арендаторов:
Tenant::createMany([
[
'name' => 'An Identifying Name',
'domain' => 'tenant1'
],
[
'name' => 'A Second Customer',
'domain' => 'tenant2'
]
]);Кроме этого пакета вашему распоряжению предлагается сопутствующий пакет Nova под названием Multitenency Nova Tool , позволяющий управлять функциональностью нескольких арендаторов в вашем приложении.
Для подробного ознакомления, вы можете прошерстить исходники на GitHub romegadigital/Multitenancy. Краткий гайд в readme поможет вам узнать, как правильно установить и использовать пакет.