React + Firebase Form Validation, если пользователь не существует - PullRequest
0 голосов
/ 21 января 2020

В настоящее время я работаю над модальным логином, который будет аутентифицировать пользователя с помощью функции firebase. Если они не существуют, я планирую использовать библиотеку реактивную ленту, чтобы перекрасить поля в красный цвет и сделать сообщение типа «Неверный адрес электронной почты или пароль». Тем не менее, я новичок ie в React, и у меня возникли большие проблемы с получением возвращаемого объекта / номера из функции firebase, когда в форме электронной почты я вызываю onAuthenticate = {firebase.authenticateUser}. Как я могу получить возвращаемый объект (-1, если пользователь не существует), проверить его и либо закрыть модальное окно, либо повернуть его красным с помощью ремешка реакции, если пользователь не существует?

Фрагмент моей базы огня функция, за которой следует мой модал React ниже.

'' '

exports.authenticateUser = async (email, password) => {
  firebase.auth().signInWithEmailAndPassword(email, password)
    .then(() => {
      const success = {
        success: true,
      };
      alert('User exists.');
      console.log('user exists');
      return success;
    })
    .catch((error) => {

      alert('Invalid email or password.');
      console.log('no user');
      return -1;
    });
};

return (
  <Modal
    title="Please enter log-in information"
    onClose={onClose}
    footer={modalFooter}
    titleBackgroundColor="#FFFACD"
  >
  <FormGroup>
    <Label for="examplePassword">Invalid input</Label>
    <Input invalid />
    <FormFeedback tooltip>Oh noes! that name is already taken</FormFeedback>
    <FormText>Example help text that remains unchanged.</FormText>
  </FormGroup>
    <EmailForm
      onAuthenticate={firebase.authenticateUser}
      const returnObj = {firebase.authenticateUser}
    />
  </Modal>
);

' ''

1 Ответ

0 голосов
/ 22 января 2020

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

firebase.auth().signInWithEmailAndPassword(email, password)
    .then(user => console.log(user))
    .catch(error => console.log(error))

Если пользователя не существует и ошибки нет, этот метод создаст пользователя .

Немного неясно, это решило вашу проблему или вы ищете способ проверить, является ли это первым входом пользователя в систему? Как пользователь не существует в вашей базе данных?

Если это то, что вы хотите сделать, метод регистрации вам не поможет. Пожалуйста, обратитесь к Firebase Auth, как узнать, что новый пользователь зарегистрировался, а не как существующий пользователь? вместо

...