Оптимальный дизайн групп пользователей и разрешений базы данных 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 этого нет, но мне она кажется немного чище.

Надеюсь, это имеет смысл, если нет, пожалуйста, не стесняйтесь задавать уточняющие вопросы. Ваше здоровье!

0 ответов

Другие вопросы по тегам