server v1.0.7
This commit is contained in:
@@ -2,6 +2,7 @@ import express from "express";
|
|||||||
import { createDish } from "../services/dataPrepServices.js";
|
import { createDish } from "../services/dataPrepServices.js";
|
||||||
import {
|
import {
|
||||||
removeDish,
|
removeDish,
|
||||||
|
fetchDish,
|
||||||
addDishToRestaurant,
|
addDishToRestaurant,
|
||||||
setDishVisibility,
|
setDishVisibility,
|
||||||
} from "../services/databaseServices.js";
|
} from "../services/databaseServices.js";
|
||||||
@@ -33,7 +34,7 @@ router.post("/", async (req, res) => {
|
|||||||
await validateRestaurant(req.body.restaurantId);
|
await validateRestaurant(req.body.restaurantId);
|
||||||
const token = req.headers["x-auth-token"];
|
const token = req.headers["x-auth-token"];
|
||||||
validateUserToken(token);
|
validateUserToken(token);
|
||||||
const dish = await createDish(req.body, req.body.restaurantId, true);
|
const dish = await createDish(req.body, req.body.restaurantId);
|
||||||
await dish.save();
|
await dish.save();
|
||||||
await addDishToRestaurant(req.body.restaurantId, dish._id);
|
await addDishToRestaurant(req.body.restaurantId, dish._id);
|
||||||
res.status(201).send(dish._id);
|
res.status(201).send(dish._id);
|
||||||
@@ -77,10 +78,12 @@ router.put("/", async (req, res) => {
|
|||||||
try {
|
try {
|
||||||
await validateDishId(req.body.dishId);
|
await validateDishId(req.body.dishId);
|
||||||
const token = req.headers["x-auth-token"];
|
const token = req.headers["x-auth-token"];
|
||||||
validateUserToken(token);
|
const decodedToken = validateUserToken(token);
|
||||||
const dish = createDish(req.body.dish, req.body.restaurantId, false);
|
await verifyDishAccess(req.body.dishId, decodedToken);
|
||||||
|
const oldDish = await fetchDish(req.body.dishId);
|
||||||
|
const dish = await createDish(req.body, req.body.restaurantId, oldDish);
|
||||||
await Dish.replaceOne({ _id: req.body.dishId }, dish);
|
await Dish.replaceOne({ _id: req.body.dishId }, dish);
|
||||||
res.sendStatus(200);
|
res.send(dish);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
handleError(error, res);
|
handleError(error, res);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,6 +59,7 @@ router.put("/", async (req, res) => {
|
|||||||
const user = validateUserToken(token);
|
const user = validateUserToken(token);
|
||||||
const oldRestaurant = await fetchRestaurant(req.body.restaurantId);
|
const oldRestaurant = await fetchRestaurant(req.body.restaurantId);
|
||||||
const newRestaurant = await createRestaurant(req.body, oldRestaurant);
|
const newRestaurant = await createRestaurant(req.body, oldRestaurant);
|
||||||
|
await verifyRestaurantAccess(req.body.restaurantId, user);
|
||||||
await Restaurant.replaceOne({ _id: req.body.restaurantId }, newRestaurant);
|
await Restaurant.replaceOne({ _id: req.body.restaurantId }, newRestaurant);
|
||||||
res.send(newRestaurant);
|
res.send(newRestaurant);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import azureBlob from "@azure/storage-blob";
|
import azureBlob from "@azure/storage-blob";
|
||||||
|
import e from "express";
|
||||||
import getStream from "into-stream";
|
import getStream from "into-stream";
|
||||||
import { newError } from "./services.js";
|
import { newError } from "./services.js";
|
||||||
|
|
||||||
@@ -77,10 +78,18 @@ export function setDeleteTempBlobTimer(blobName, containerClient, minutes) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function deleteImage(url) {
|
export async function deleteImage(url) {
|
||||||
const containerClient = blobServiceClient.getContainerClient(container);
|
if (!url || url === "" || url === "empty") {
|
||||||
const containerUrl = containerClient.url + "/";
|
return;
|
||||||
const blobName = url.replace(containerUrl, "");
|
} else {
|
||||||
console.log(`BLOB NAME = ${blobName}`);
|
try {
|
||||||
const blob = containerClient.getBlobClient(blobName);
|
const containerClient = blobServiceClient.getContainerClient(container);
|
||||||
await blob.delete();
|
const containerUrl = containerClient.url + "/";
|
||||||
|
const blobName = url.replace(containerUrl, "");
|
||||||
|
console.log(`BLOB NAME = ${blobName}`);
|
||||||
|
const blob = containerClient.getBlobClient(blobName);
|
||||||
|
await blob.delete();
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -113,9 +113,9 @@ export async function prepareSafeUser(user) {
|
|||||||
return safeUser;
|
return safeUser;
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function createDish(dish, restaurantId, generateId) {
|
export async function createDish(dish, restaurantId, oldDish) {
|
||||||
try {
|
try {
|
||||||
if (generateId) {
|
if (!oldDish) {
|
||||||
const img = await handleImageUpdate(dish);
|
const img = await handleImageUpdate(dish);
|
||||||
const newDish = new Dish({
|
const newDish = new Dish({
|
||||||
_id: new mongoose.Types.ObjectId(),
|
_id: new mongoose.Types.ObjectId(),
|
||||||
@@ -126,15 +126,7 @@ export async function createDish(dish, restaurantId, generateId) {
|
|||||||
notes: sanitizer.sanitize.keepUnicode(dish.notes),
|
notes: sanitizer.sanitize.keepUnicode(dish.notes),
|
||||||
imgUrl: img,
|
imgUrl: img,
|
||||||
weight: dish.weight,
|
weight: dish.weight,
|
||||||
allergens: {
|
allergens: dish.allergens,
|
||||||
gluten: dish.allergens.gluten,
|
|
||||||
lactose: dish.allergens.lactose,
|
|
||||||
soy: dish.allergens.soy,
|
|
||||||
eggs: dish.allergens.eggs,
|
|
||||||
seaFood: dish.allergens.seaFood,
|
|
||||||
peanuts: dish.allergens.peanuts,
|
|
||||||
sesame: dish.allergens.sesame,
|
|
||||||
},
|
|
||||||
ingredients: dish.ingredients,
|
ingredients: dish.ingredients,
|
||||||
glicemicIndex: dish.glicemicIndex,
|
glicemicIndex: dish.glicemicIndex,
|
||||||
kCal: dish.kCal,
|
kCal: dish.kCal,
|
||||||
@@ -143,24 +135,16 @@ export async function createDish(dish, restaurantId, generateId) {
|
|||||||
});
|
});
|
||||||
return newDish;
|
return newDish;
|
||||||
} else {
|
} else {
|
||||||
const img = "";
|
const img = await handleImageUpdate(dish, oldDish);
|
||||||
const newDish = new Dish({
|
const newDish = new Dish({
|
||||||
restaurantId: restaurantId,
|
restaurantId: oldDish.restaurantId,
|
||||||
name: sanitizer.sanitize.keepUnicode(dish.name),
|
name: sanitizer.sanitize.keepUnicode(dish.name),
|
||||||
category: dish.category,
|
category: dish.category,
|
||||||
price: dish.price,
|
price: dish.price,
|
||||||
notes: sanitizer.sanitize.keepUnicode(dish.notes),
|
notes: sanitizer.sanitize.keepUnicode(dish.notes),
|
||||||
imgUrl: img,
|
imgUrl: img,
|
||||||
weight: dish.weight,
|
weight: dish.weight,
|
||||||
allergens: {
|
allergens: dish.allergens,
|
||||||
gluten: dish.allergens.gluten,
|
|
||||||
lactose: dish.allergens.lactose,
|
|
||||||
soy: dish.allergens.soy,
|
|
||||||
eggs: dish.allergens.eggs,
|
|
||||||
seaFood: dish.allergens.seaFood,
|
|
||||||
peanuts: dish.allergens.peanuts,
|
|
||||||
sesame: dish.allergens.sesame,
|
|
||||||
},
|
|
||||||
ingredients: dish.ingredients,
|
ingredients: dish.ingredients,
|
||||||
glicemicIndex: dish.glicemicIndex,
|
glicemicIndex: dish.glicemicIndex,
|
||||||
kCal: dish.kCal,
|
kCal: dish.kCal,
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ export async function removeDish(dishId) {
|
|||||||
const deletedDoc = await Dish.findByIdAndDelete(dishId).catch((e) => {
|
const deletedDoc = await Dish.findByIdAndDelete(dishId).catch((e) => {
|
||||||
throw newError("Usunięcie dania nie powiodło się.", 500);
|
throw newError("Usunięcie dania nie powiodło się.", 500);
|
||||||
});
|
});
|
||||||
|
await deleteImage(deletedDoc.imgUrl);
|
||||||
await Restaurant.findByIdAndUpdate(deletedDoc.restaurantId, {
|
await Restaurant.findByIdAndUpdate(deletedDoc.restaurantId, {
|
||||||
$pull: { dishes: dishId },
|
$pull: { dishes: dishId },
|
||||||
}).catch((error) => {
|
}).catch((error) => {
|
||||||
|
|||||||
@@ -112,11 +112,9 @@ export async function verifyDishAccess(dishId, decodedToken) {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
const restaurants = fetch.restaurants;
|
const restaurants = fetch.restaurants;
|
||||||
const restaurantId = await Dish.findById(dishId, "restaurantId").catch(
|
const restaurantId = await Dish.findById(dishId).catch((error) => {
|
||||||
(error) => {
|
throw newError("Nie znaleziono dania.", 404);
|
||||||
throw newError("Nie znaleziono dania.", 404);
|
});
|
||||||
}
|
|
||||||
);
|
|
||||||
const valid = restaurants.includes(restaurantId.restaurantId);
|
const valid = restaurants.includes(restaurantId.restaurantId);
|
||||||
if (!valid) throw newError("Nie masz dostępu do tego dania.", 401);
|
if (!valid) throw newError("Nie masz dostępu do tego dania.", 401);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user