Я пытаюсь создать приложение с использованием firebase auth и firestore, где новые пользователи могут быть приглашены по электронной почте для работы над проектом.Проблема в том, что я не знаю, как лучше всего хранить временные разрешения для пользовательских проектов до того, как у них будет UID.Я хочу, чтобы пользователь, получивший приглашение по электронной почте, получил доступ к проекту после открытия отправленной ему ссылки.
Я пробовал два разных способа
Наличие документа для подсборки для каждого пользователя впроект
/project/{projectId}/users/{userId}
При приглашении нового пользователя в качестве идентификатора пользователя был задан его адрес электронной почты с облачной функцией, которая запускалась при создании нового пользователя для отправки пользователю приглашения по электронной почте.После того, как пользователь открыл ссылку, он удалил свой пользовательский документ и запустил облачную функцию, которая создала новый документ с идентификатором пользователя, который был у них один раз с момента аутентификации.
Это сработало, но оставило 10 секундпериод, когда пользователь не может взаимодействовать с проектом, потому что запущена облачная функция для создания нового пользовательского документа.Кроме того, это просто казалось плохим способом сделать это.
Наличие одного документа со всей пользовательской информацией
/project/{projectId}/users/users
users:{
roles: {
users_id: 'admin',
new_user_email: 'admin',
}
}
Этот я не смог заставить работать как пожарный магазинне позволяет вам создать ключ с точкой в нем, но если бы был способ обойти это, он бы тоже работал.Я также установил правила безопасности firestore, благодаря которым они могли редактировать поля, в которых был указан ключ uid, или их электронную почту, если они не были редактором / администратором.