как сделать код на входе в систему или не войти - PullRequest
0 голосов
/ 27 апреля 2020

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

handleLogIn = async () => {
const { userName, password } = this.state.user;
const { users } = this.state;

await postFetch(`/users/login`, {
  userName: users.find((user) => user.userName === userName).userName,
  password: password,
  hashPass: users.find((user) => user.userName === userName).password
})
  .then(
    this.setState({
      user: {
        ...this.state.user,
        id: users.find((user) => user.userName === userName).id,
        firstName: users.find((user) => user.userName === userName)
          .firstName,
        lastName: users.find((user) => user.userName === userName).lastName,
        userName: users.find((user) => user.userName === userName).userName,
        password: users.find((user) => user.userName === userName).password,
        email: users.find((user) => user.userName === userName).email,
      },
    }),
    this.getPreference(users.find((user) => user.userName === userName).id),
    this.getReadings(users.find((user) => user.userName === userName).id)
  )
  .catch((err) => console.log(err));
};

Когда я передаю его на сервер, я получаю одно из трех сообщений обратно json формат

1 Ответ

0 голосов
/ 27 апреля 2020

Вы не указали структуру ответа, если пароль неправильный, но в любом случае вам нужно изменить обработчик then и проверить результат.

Вот как я бы это сделал:

await postFetch(`/users/login`, {
  userName: users.find((user) => user.userName === userName).userName,
  password: password,
  hashPass: users.find((user) => user.userName === userName).password
})
  .then(result => {

   // handle wrong password
   if(!result.success)  {
    console.log(result.errors)
    return;
   }

    this.setState({
      user: {
        ...this.state.user,
        id: users.find((user) => user.userName === userName).id,
        firstName: users.find((user) => user.userName === userName)
          .firstName,
        lastName: users.find((user) => user.userName === userName).lastName,
        userName: users.find((user) => user.userName === userName).userName,
        password: users.find((user) => user.userName === userName).password,
        email: users.find((user) => user.userName === userName).email,
      },
    });
    this.getPreference(users.find((user) => user.userName === userName).id);
    this.getReadings(users.find((user) => user.userName === userName).id);
    }
  )
  .catch((err) => console.log(err));
};
...