В следующем коде я использую bcrypt, чтобы иметь sh пароль и сохранить его в пользовательском массиве. После первоначального создания с post => /api/register
логин работает правильно и возвращает приветственное сообщение. после обновления пароля новой строкой с сообщением /api/register/1,
`пароль действительно обновляется, но вход в систему не удается ни для одного из созданных паролей. Спасибо за поиск.
const express = require("express");
const app = express();
app.use(express.json());
const bcrypt = require("bcrypt");
const users = [];
app.post("/api/register", async (req, res) => {
// do the registration here
const user = {
id: users.length + 1,
name: req.body.name,
password: req.body.password,
};
const salt = await bcrypt.genSalt(10);
user.password = await bcrypt.hash(user.password, salt);
users.push(user);
res.send(user);
});
app.post("/api/register/:id", async (req, res) => {
const user = users.find((u) => u.id === parseInt(req.params.id));
if (!user) return res.status(404).send("user not found");
const salt = await bcrypt.genSalt(10);
user.password = await bcrypt.hash(user.password, salt);
res.send(user);
});
app.post("/api/login", async (req, res) => {
const user = users.find((u) => u.name === req.body.name);
if (!user) return res.status(404).send("user was not found");
const validPassword = await bcrypt.compare(req.body.password, user.password);
if (validPassword) res.send("welcome" + user.name);
else res.send(user);
});
const port = process.env.PORT || 3000;
app.listen(port, () => console.log(`listening on port ${port}`));