Оптимальный дизайн групп пользователей и разрешений базы данных Firebase Realtime.
Я пытаюсь создать базу данных реального времени с помощью Firebase, которую можно будет масштабировать по мере роста нашей компании, и я не уверен, что будет наиболее выгодно в долгосрочной перспективе.
Я хочу создать группы пользователей, чтобы ограничить доступ к различным узлам в базе данных и иметь возможность обойти эти правила с помощью исключений. Текущая идея состоит в том, чтобы группы определяли, к чему пользователи могут иметь доступ, а затем имели возможность применять исключения к конкретным пользователям, чтобы предоставить им доступ за пределами того, что делает их группа.
Это плохая практика? Было бы лучше иметь и роли, и группы?
Я также был бы признателен за отзывы о структуре, я подумал о двух разных способах сделать это (вероятно, есть сотни других, но в интересах здравомыслия я ограничился двумя). Имейте в виду, я стараюсь сохранить структуру плоской в соответствии с документацией Firebase:
STRUCTURE A
permissions:
groups:
admin:
woody: true
buzz: true
accounts:
slinky: true
jessie: true
rules:
root:
admin:
read: true
write: true
purchasing:
accounts:
read: true
write: true
exceptions:
root:
jessie:
read: true
STRUCTURE B
groups:
admin:
members:
woody: true
buzz: true
rules:
root:
read: true
write: true
accounts:
members:
slinky: true
jessie: true
rules:
purchasing:
read: true
write: true
Обоснование этих двух вариантов следующее: в структуре A я могу заранее определить набор разрешений, которые остаются там всегда, независимо от того, имеет ли к ним доступ ни одна группа, они четко определены. В структуре B этого нет, но мне она кажется немного чище.
Надеюсь, это имеет смысл, если нет, пожалуйста, не стесняйтесь задавать уточняющие вопросы. Ваше здоровье!