Scope inventory list to own room + shared items for tenants
Tenants could previously see every other tenant's private room inventory including purchase prices. Now matches the app's standard visibility rule: own room + roomId=NULL (shared) items only; landlord/ admin unchanged (see everything).
This commit is contained in:
parent
a8dc999180
commit
0179517979
@ -7,8 +7,10 @@ const prisma = new PrismaClient();
|
|||||||
/**
|
/**
|
||||||
* Router für die Inventarverwaltung (Möbel & Geräte je Zimmer bzw.
|
* Router für die Inventarverwaltung (Möbel & Geräte je Zimmer bzw.
|
||||||
* Gemeinschaftsfläche). Anlegen/Ändern/Löschen ist Vermieter/Admin
|
* Gemeinschaftsfläche). Anlegen/Ändern/Löschen ist Vermieter/Admin
|
||||||
* vorbehalten; die Liste selbst ist für alle eingeloggten Nutzer sichtbar
|
* vorbehalten. Sichtbarkeit wie überall sonst: Mieter sehen nur Inventar
|
||||||
* (z. B. damit Mieter nachschauen können, was zu welchem Zimmer gehört).
|
* 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
|
* Pro Gegenstand können mehrere Fotos hinterlegt werden (photoUrls) — das
|
||||||
* Web-Dashboard sendet dafür clientseitig eingelesene Bilder als Data-URLs,
|
* 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());
|
.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({
|
const items = await prisma.inventory.findMany({
|
||||||
|
where,
|
||||||
orderBy: { createdAt: 'desc' },
|
orderBy: { createdAt: 'desc' },
|
||||||
select: INVENTORY_SELECT,
|
select: INVENTORY_SELECT,
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user