bug(delete) - fixed bug)

This commit is contained in:
2025-09-17 02:41:46 +05:30
parent bce2fe7b38
commit 042e170362
5 changed files with 37 additions and 34 deletions

View File

@@ -357,34 +357,33 @@ router.put(
); );
// Delete an appointment // Delete an appointment
router.delete( router.delete("/:id", async (req: Request, res: Response): Promise<any> => {
"/:id", try {
const appointmentIdParam = req.params.id;
async (req: Request, res: Response): Promise<any> => { if (!appointmentIdParam) {
try { return res.status(400).json({ message: "Appointment ID is required" });
const appointmentIdParam = req.params.id;
if (!appointmentIdParam) {
return res.status(400).json({ message: "Appointment ID is required" });
}
const appointmentId = parseInt(appointmentIdParam);
// Check if appointment exists and belongs to user
const existingAppointment = await storage.getAppointment(appointmentId);
if (!existingAppointment) {
return res.status(404).json({ message: "Appointment not found" });
}
if (existingAppointment.userId !== req.user!.id) {
return res.status(403).json({ message: "Forbidden" });
}
// Delete appointment
await storage.deleteAppointment(appointmentId);
res.status(204).send();
} catch (error) {
res.status(500).json({ message: "Failed to delete appointment" });
} }
const appointmentId = parseInt(appointmentIdParam);
// Check if appointment exists and belongs to user
const existingAppointment = await storage.getAppointment(appointmentId);
if (!existingAppointment) {
return res.status(404).json({ message: "Appointment not found" });
}
if (existingAppointment.userId !== req.user!.id) {
return res.status(403).json({
message:
"Forbidden: Appointment belongs to a different user, you can't delete this.",
});
}
// Delete appointment
await storage.deleteAppointment(appointmentId);
res.status(204).send();
} catch (error) {
res.status(500).json({ message: "Failed to delete appointment" });
} }
); });
export default router; export default router;

View File

@@ -375,7 +375,10 @@ router.delete("/:id", async (req: Request, res: Response): Promise<any> => {
} }
if (existingClaim.userId !== req.user!.id) { if (existingClaim.userId !== req.user!.id) {
return res.status(403).json({ message: "Forbidden" }); return res.status(403).json({
message:
"Forbidden: Claim belongs to a different user, you can't delete this.",
});
} }
await storage.deleteClaim(claimId); await storage.deleteClaim(claimId);

View File

@@ -102,9 +102,10 @@ router.delete("/:id", async (req: Request, res: Response): Promise<any> => {
// 2) Ownership check // 2) Ownership check
if (existing.userId !== userId) { if (existing.userId !== userId) {
return res return res.status(403).json({
.status(403) message:
.json({ message: "Forbidden: Not your credential" }); "Forbidden: Credentials belongs to a different user, you can't delete this.",
});
} }
// 3) Delete (storage method enforces userId + id) // 3) Delete (storage method enforces userId + id)

View File

@@ -304,7 +304,7 @@ export default function PaymentsRecentTable({
onError: (error) => { onError: (error) => {
toast({ toast({
title: "Error", title: "Error",
description: `Failed to delete payment: ${error.message})`, description: `Failed to delete payment: ${error.message}`,
variant: "destructive", variant: "destructive",
}); });
}, },

View File

@@ -4,7 +4,7 @@ const API_BASE_URL = import.meta.env.VITE_API_BASE_URL_BACKEND ?? "";
async function throwIfResNotOk(res: Response) { async function throwIfResNotOk(res: Response) {
if (!res.ok) { if (!res.ok) {
if (res.status === 401 || res.status === 403) { if (res.status === 401) {
localStorage.removeItem("token"); localStorage.removeItem("token");
if (!window.location.pathname.startsWith("/auth")) { if (!window.location.pathname.startsWith("/auth")) {
window.location.href = "/auth"; window.location.href = "/auth";