Removing emails from events if neccessary

This commit is contained in:
Selim Mustafaev 2025-04-12 18:24:36 +03:00
parent 074ea0f549
commit 962b0133c5
2 changed files with 48 additions and 2 deletions

View File

@ -143,6 +143,8 @@ router.post('/check', async (req, res) => {
}
await collection.replaceOne({ number }, vehicle, { upsert: true });
await Utils.vehicleRemoveEventEmails(vehicle, req);
res.status(201).send({ success: true, data: vehicle });
} catch (ex) {
res.send(makeError(ex.message));
@ -187,10 +189,12 @@ router.get('/', async (req, res) => {
.sort({ [sortBy]: isAscending ? 1 : -1 })
.limit(pageSize)
.toArray();
if (vehicles.length == pageSize) {
response.pageToken = vehicles[vehicles.length - 1]._id;
}
response.items = vehicles;
response.items = await Utils.vehiclesRemoveEventEmails(vehicles, req);
res.send({ success: true, data: response });
} catch (ex) {
@ -206,6 +210,7 @@ router.get('/report', async (req, res) => {
let collection = req.db.collection('vehicles');
let vehicle = await collection.findOne({ number });
if (vehicle) {
await Utils.vehicleRemoveEventEmails(vehicle, req);
res.send({ success: true, data: vehicle });
} else {
res.send(makeError('Vehicle not found'));
@ -279,7 +284,8 @@ router.get(
let collection = req.db.collection('vehicles');
let vehicles = await collection.find({ number: plateNumber }).toArray();
if (vehicles.length > 0) {
res.send({ success: true, data: vehicles[0] });
let vehicle = await Utils.vehicleRemoveEventEmails(vehicles[0], req);
res.send({ success: true, data: vehicle });
} else {
res.send(makeError('Vehicle not found'));
}
@ -303,6 +309,7 @@ router.post('/checkOsago', async (req, res) => {
});
let vehicle = await collection.findOne(filter);
if (vehicle) {
await Utils.vehicleRemoveEventEmails(vehicle, req);
res.send({ success: true, data: vehicle });
} else {
res
@ -371,6 +378,7 @@ router.post('/checkGbTg', async (req, res) => {
await collection.updateOne({ number }, { $set: updatedFields });
vehicle = await collection.findOne({ number });
await Utils.vehicleRemoveEventEmails(vehicle, req);
res.send({
success: true,
data: Object.assign(vehicle, updatedFields),

View File

@ -146,6 +146,44 @@ class Utils {
static removeNullFields(obj) {
return Object.fromEntries(Object.entries(obj).filter(([, v]) => v != null));
}
static async vehiclesRemoveEventEmails(vehicles, req) {
let user = await req.db.collection('users')
.findOne({ email: req.user.email });
if (user.permissions.includes('locationAuthor')) {
return vehicles;
}
for (let vehicle of vehicles) {
for (let event of vehicle.events) {
if (event.addedBy != user.email) {
event.addedBy = null;
}
}
}
return vehicles;
}
static async vehicleRemoveEventEmails(vehicle, req) {
let user = await req.db.collection('users')
.findOne({ email: req.user.email });
if (user.permissions.includes('locationAuthor')) {
return vehicle;
}
for (let event of vehicle.events) {
if (event.addedBy != user.email) {
event.addedBy = null;
}
}
return vehicle;
}
}
export default Utils;