У меня есть база данных Firestore для приложения, в котором пользователь будет проходить аутентификацию с использованием электронной почты и пароля в стороннем API, который возвращает идентификатор своей учетной записи, идентификатор пользователя и токен API.
Если пользователь Firestore сих электронная почта уже не существует, я создаю один.Затем я проверяю базу данных Firestore, чтобы увидеть, есть ли уже документ для этого идентификатора учетной записи.Если нет, я создаю один и создаю подколлекцию для «пользователей», затем добавляю их данные в качестве документа пользователя и включаю поля isAllowed и isAdmin как true, и сохраняю их идентификатор пользователя firebase.
На странице администратора приложения я запрашиваю идентификатор их учетной записи в стороннем API и возвращаю всех пользователей в свою учетную запись.Администратор затем имеет возможность разрешить другим пользователям доступ к приложению и при желании пометить их как администраторов.Эти разрешения сохраняются путем добавления пользовательских данных в виде документов в коллекцию Firestore / {account id} / users с isAllowed и соответственно установленным isAdmin.
На данный момент у этих дополнительных пользователей нет учетных записей firebase, поэтому яЯ использую идентификатор пользователя от третьего лица в качестве имени документа «пользователи» для всех.Насколько я знаю, это усложняет правила безопасности Firebase, потому что у меня нет связи между данными учетной записи Firebase, переданными в правила безопасности, и данными базы данных.
Мои желаемые правила:
- Если идентификатор учетной записи не существует, разрешить создание учетной записи и пользователей
- Если идентификатор учетной записи существует, разрешить доступ только для чтения для данных учетной записи и только их пользователя, если пользователь существует в коллекции пользователей и isAllowed = true
- Если # 2 имеет значение true, разрешить доступ на запись ко всей учетной записи, если isAdmin = true
Имеет ли это смысл?Есть мысли или предложения?
Спасибо.