crabfit/crabfit-backend/routes/updatePerson.js
2021-02-27 00:52:20 +11:00

38 lines
913 B
JavaScript

const bcrypt = require('bcrypt');
module.exports = async (req, res) => {
const { eventId, personName } = req.params;
const { person } = req.body;
try {
const query = req.datastore.createQuery('Person')
.filter('eventId', eventId)
.filter('name', personName);
let personResult = (await req.datastore.runQuery(query))[0][0];
if (personResult) {
if (person && person.availability) {
if (personResult.password) {
const passwordsMatch = person.password && await bcrypt.compare(person.password, personResult.password);
if (!passwordsMatch) {
return res.status(401).send('Incorrect password');
}
}
personResult.availability = person.availability;
await req.datastore.upsert(personResult);
res.sendStatus(200);
} else {
res.sendStatus(400);
}
} else {
res.sendStatus(404);
}
} catch (e) {
console.error(e);
res.sendStatus(400);
}
};