FirebaseUI - проверка displayName перед созданием пользователя - PullRequest
7 голосов
/ 02 октября 2019

Я использую firebaseui-web-react. В процессе регистрации я хочу проверить предоставленную пользователем displayName перед созданием пользователя. В частности, я хочу убедиться, что displayName уникален.

Я знаю, как проверять уникальные имена пользователей с помощью Firestore. У меня есть общедоступная коллекция user с полями displayName. Я знаю, как посмотреть, если displayName уже занято, с помощью запроса:

const snapshot = await store
  .collection('user')
  .where('displayName', '==', displayNameFormValue)
  .get()

return snapshot.empty

Я хочу проверить displayName перед созданием пользователя. Я хочу избежать создания и немедленного удаления пользователя. Я хочу проверить displayName до того, как FirebaseUI отправит запрос на создание пользователя.

Однако FirebaseUI предоставляет только обратные вызовы, такие как signInSuccessWithAuthResult. Эти обратные вызовы запускаются только после того, как пользователь был создан. Если я использую эти обратные вызовы для проверки displayName, мне придется задним числом удалить созданного пользователя, если его displayName будет взято. Я хочу проверить displayName пользователя перед его созданием, чтобы избежать удаления.

Как использовать запрос, показанный выше, для проверки displayName перед созданием пользователя Firebase? Как я могу поддерживать уникальные отображаемые имена, используя готовые компоненты и контекст FirebaseUI? Как я могу интегрировать проверку формы с FirebaseUI?

Ответы [ 2 ]

4 голосов
/ 05 октября 2019

Как сказано в документации :

В настоящее время FirebaseUI не предлагает настройки из коробки. Однако на HTML вокруг виджета это не влияет, так что вы можете отобразить все, что хотите, вокруг контейнера виджетов.

Таким образом, у вас нет возможности добавить предварительный хук, проверку и т. Д. ОднакоВы можете попытаться перехватить запросы, используя xhr-intercept или fetch-intercept , и делать все, что угодно, когда есть запрос на создание пользователя. Вы можете отменить запрос, если displayName не уникален и показать ошибку через JS.

3 голосов
/ 08 октября 2019

Поскольку firebaseUI не может быть настроен, возможные решения могут быть.

  1. Внутреннее решение - подписаться на firebase hooks , который уведомляет о любых изменениях данных. где вы можете проверить уникальность displayName.

  2. Интерфейсное решение - Разработка пользовательского экрана интерфейса Auth, интегрированного с плагинами Firebase UI . Здесь вы будете иметь полный контроль над данными перед отправкой их в firebase.

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