diff --git a/backend/src/routes/inventory.ts b/backend/src/routes/inventory.ts index 16018c3..e8e955a 100644 --- a/backend/src/routes/inventory.ts +++ b/backend/src/routes/inventory.ts @@ -7,8 +7,10 @@ const prisma = new PrismaClient(); /** * Router für die Inventarverwaltung (Möbel & Geräte je Zimmer bzw. * Gemeinschaftsfläche). Anlegen/Ändern/Löschen ist Vermieter/Admin - * vorbehalten; die Liste selbst ist für alle eingeloggten Nutzer sichtbar - * (z. B. damit Mieter nachschauen können, was zu welchem Zimmer gehört). + * vorbehalten. Sichtbarkeit wie überall sonst: Mieter sehen nur Inventar + * ihres eigenen Zimmers plus echte Gemeinschaftsgegenstände (roomId NULL), + * nicht das private Zimmerinventar (inkl. Kaufpreis) anderer Mieter. + * Vermieter/Admin sehen alles. * * Pro Gegenstand können mehrere Fotos hinterlegt werden (photoUrls) — das * Web-Dashboard sendet dafür clientseitig eingelesene Bilder als Data-URLs, @@ -39,8 +41,16 @@ function sanitizePhotoUrls(input: unknown): string[] { .map((u) => (u as string).trim()); } -inventoryRouter.get('/inventory', requireAuth, async (_req: AuthedRequest, res: Response) => { +inventoryRouter.get('/inventory', requireAuth, async (req: AuthedRequest, res: Response) => { + const isLandlord = req.user!.role === 'LANDLORD' || req.user!.role === 'ADMIN'; + let where = {}; + if (!isLandlord) { + const self = await prisma.user.findUnique({ where: { id: req.user!.id }, select: { roomId: true } }); + where = { OR: [{ roomId: null }, { roomId: self?.roomId ?? '__none__' }] }; + } + const items = await prisma.inventory.findMany({ + where, orderBy: { createdAt: 'desc' }, select: INVENTORY_SELECT, });