Multitenancy
Описание
Поддержка мультиарендности (multitenancy) с общей БД в приложениях CUBA.
Ключевая идея состоит в том, что единый экземпляр приложения обслуживает множество «арендаторов» - групп пользователей, невидимых друг для друга, которые не обмениваются данными и не имеют доступа к данным друг друга.
Приложение поддерживает два типа данных - общие данные (доступные всем арендаторам) и личные данные конкретного арендатора. Общие данные доступны арендаторам в режиме “только для чтения”, тогда как к собственным данным у них есть полный доступ. Также для всех арендаторов существует собственный пользователь-администратор, который наделен правами создания арендаторов, назначения ролей и специальных разрешений.
Компонент представляет собой реализацию мультиарендности с единой базой данных/схемой БД. Для обозначения владельца данных используется столбец TENANT_ID в таблицах арендаторов.
Все сущности, специфичные для арендаторов, реализуют интерфейс HasTenant, весь смысл которого в обеспечении геттеров и сеттеров для атрибута tenant id в классе сущности.