Группы и роли для SaaS без самописной мультитенантности
Обновлено
При регистрации Seed даёт каждому аккаунту личную группу, а люди создают общие группы, приглашают других и дают им роли от читателя до владельца. Группа — единственная граница доступа, поэтому фича, которую вы добавите, проходит ту же проверку, как только скопирует сущность заметок.
- Группа — единственная граница доступа: личные и общие данные проходят одну и ту же проверку
- Приложение, его код и этот сайт одинаково называют это группой
- Нет второй модели прав, которую пришлось бы синхронизировать с первой
- Приглашения, смена ролей и передача владения — у каждого свои тесты
Каждая строка общих данных принадлежит группе, и API проверяет роль человека в этой группе, прежде чем читать или писать. Читатель только читает, редактор ещё и меняет данные группы, а администратор и владелец вдобавок управляют участниками и читают журнал действий.
Владелец передаёт владение в один шаг, а удалённую группу можно восстановить в течение 30 дней. Приглашать может только аккаунт с подтверждённой почтой.

У каждого аккаунта есть своя группа?
Да. При регистрации каждый аккаунт получает личную группу; личная и общая группы проходят одну и ту же проверку.
Может ли читатель менять данные группы?
Нет. Читатель видит данные группы; менять их могут редактор, администратор или владелец.
Можно ли вернуть удалённую группу?
Да. Владелец может восстановить её в течение 30 дней; после этого воркер удаляет её насовсем.
Нужна ли отдельная система прав для моих собственных фич?
Нет. Новая сущность копирует сущность заметок вместе с её проверкой группы, так что модель прав остаётся одна.