Actualmente solo estoy haciendo un sistema de inicio de sesión muy simple y básico con una dirección de correo electrónico o un número de teléfono. Sin contraseña.
Nada importante que ocultar, solo un centro de información.
Lo que quiero lograr:
Qué está pasando actualmente:
El código:
Objeto de los usuarios
const users = [ { email: "jon@doe.com", phone: "0798888888", name: "John Doe", access: ["home", "blah", "etc"] }, { email: "fakedoe@john.com", phone: "079000000", name: "Fake Doe", access: ["home", "etc"] } ];Código principal:
app.post("/in", async (req, res) => { let email = req.body.email, phone = req.body.phone; let conditions = !!email ? { email } : { phone }; let data = users.find((x) => x.email === conditions.email || x.phone === conditions.phone); let pass = data.email || data.phone !== undefined; console.log(pass); if (pass) { if (conditions.email && conditions.email === data.email) { pass = true; } if (conditions.phone && conditions.phone === data.phone) { pass = true; } } if (pass) { res.cookie("JWT", jwtSign(req.body.email, data.name, data.access)); res.status(200); res.send("OK"); } else { res.status(200); res.send("Invalid user/password"); } });sistema de inicio de sesión con una dirección de correo electrónico o un número de teléfono
Tenía que encontrar una manera de jugar con el código. ¡Aquí hay una versión funcional!
const users = [{ email: "fakedoe@john.com", phone: "079000000", name: "Fake Doe", access: ["home", "etc"] } ]; function checkUserExists(email, phone) { return !!users.find((x) => x.email === email || x.phone === phone); } console.log(checkUserExists('fakedoe@john.com', '0490')); //email console.log(checkUserExists('fakedoe@joh.com', '079000000')); //phone console.log(checkUserExists('fakedoe@john.com', '079000000')); //both console.log(checkUserExists('fakedoe@joh.com', '0490')); //noneAsí que reemplaza esto:
app.post("/in", async (req, res) => { let email = req.body.email, phone = req.body.phone; let conditions = !!email ? { email } : { phone }; let data = users.find((x) => x.email === conditions.email || x.phone === conditions.phone); let pass = data.email || data.phone !== undefined; console.log(pass); if (pass) { if (conditions.email && conditions.email === data.email) { pass = true; } if (conditions.phone && conditions.phone === data.phone) { pass = true; } } if (pass) { res.cookie("JWT", jwtSign(req.body.email, data.name, data.access)); res.status(200); res.send("OK"); } else { res.status(200); res.send("Invalid user/password"); } });con este:
function userExists(email, phone) { return !!users.find((x) => x.email === email || x.phone === phone); } app.post("/in", async (req, res) => { if (userExists(req.body.email, req.body.phone)) { res.cookie("JWT", jwtSign(req.body.email, data.name, data.access)); res.status(200); res.send("OK"); } else { res.status(200); res.send("Invalid user/password"); } });