Денормализация структур данных и обработка правил безопасности? - PullRequest
0 голосов
/ 27 сентября 2018

У меня следующий сценарий:

У меня есть организация, состоящая из нескольких команд, сотрудник может принадлежать к одной или нескольким командам.Менеджеры организации могут редактировать что угодно, а менеджеры команд могут редактировать только свою собственную команду, но никто другой и сотрудник не могут редактировать себя.Первоначально я разработал свою базу данных следующим образом:

 /organization
        /permissions
          read: [uid1, uid2]   (employees with full read and write access)
          write: [uid1, uid2]

        /employees
           <employeeId>
               /teams       (the teams the user is part of)
                   teamId : true
        /teams
            <teamId>/
                    /permissions
                       read: [uid1, uid2] (team manager permission)
                       write: [uid1, uid2]
                   /members
                        employeeId:true

Документация Firebase рекомендует денормализовать базу данных, что предполагает следующий дизайн:

/organization    
    /permissions

/teams
   /members
   /permissions

/employees
   /teams

Однако это делает правила безопасности намного более сложными, так какнасколько я могу понять.Например, чтобы проверить, кто может писать сотруднику, руководителю организации, руководителю группы или самому сотруднику, нам понадобится что-то вроде этого:

$employeeId:{
   ".write": { "data.authId === auth.uid" || **check that the auth.uid an organization manager or any of the team managers the user belongs to.**

Я не знаю, как сделать вторую проверку (выделено жирным шрифтом))

Моя схема сотрудника содержит следующие поля:

firstName
  lastName
  orgnanizationId
  teams:
    <teamId> : true

Буду признателен, если вы укажете мне правильное направление или поделитесь какой-нибудь информацией о том, как мне следует разрабатывать правила БД или правила безопасности.,Я уже проверял этот пост ранее, но он не ответил на мой вопрос.

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...