Проверьте разрешение пользователя с помощью правил безопасности Firestore для мультитенантного приложения - PullRequest
0 голосов
/ 05 сентября 2018

Я работал над созданием мультитенантного приложения в Firebase и Firestore. Текущая структура выглядит примерно так:

/users
/companies
/company_user (this links the company and the user, with userId and companyId)
/service1
/service2

В принципе, в каждой компании может быть включен или отключен какой-либо сервис, а пользователи назначены компаниям. Пользователь может быть связан с несколькими компаниями.

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

Большинство основных правил работают, однако я хотел бы убедиться, что у каждого пользователя есть доступ к компании, и что у компании есть доступ к этой услуге.

По сути, это будет означать проверку в companies_user, чтобы увидеть, имеет ли пользователь привязанную компанию, а затем, если компания имеет эту услугу (каждый документ службы имеет поле companyId для проверки)

Я не вижу, как это можно сделать с помощью get () или exist ().

Можно ли это сделать? Или я должен реструктурировать свои данные? Что-то вроде:

/companies/{company}
/companies/{company}/users
/companies/{company}/service1
/companies/{company}/service2

Я не фанат этого, потому что это означало бы наличие данных повсюду, но, возможно, я слишком привык к SQL и NoSQL.

Спасибо

...