diff --git a/backend/controllers/memberController.js b/backend/controllers/memberController.js index cdf56c9..23b20cb 100644 --- a/backend/controllers/memberController.js +++ b/backend/controllers/memberController.js @@ -120,7 +120,8 @@ const generateMemberGallery = async (req, res) => { try { const { clubId } = req.params; const { authcode: userToken } = req.headers; - const result = await MemberService.generateMemberGallery(userToken, clubId); + const size = parseInt(req.query.size) || 200; // Default: 200x200 + const result = await MemberService.generateMemberGallery(userToken, clubId, size); if (result.status === 200) { res.setHeader('Content-Type', 'image/png'); res.setHeader('Cache-Control', 'no-store'); diff --git a/backend/services/memberService.js b/backend/services/memberService.js index e3f157f..bf817a7 100644 --- a/backend/services/memberService.js +++ b/backend/services/memberService.js @@ -1070,10 +1070,14 @@ class MemberService { } } - async generateMemberGallery(userToken, clubId) { + async generateMemberGallery(userToken, clubId, size = 200) { try { await checkAccess(userToken, clubId); + // Validiere und setze tileDimension (nur 100, 150, 200 erlaubt) + const validSizes = [100, 150, 200]; + const tileDimension = validSizes.includes(size) ? size : 200; + const members = await Member.findAll({ where: { clubId, @@ -1130,8 +1134,6 @@ class MemberService { error: 'Keine aktiven Mitglieder mit Bildern gefunden' }; } - - const tileDimension = 200; // Maximale Breite für die Galerie (Dialog-Breite 900px - 32px Padding = 868px) const maxGalleryWidth = 868; // Berechne maximale Anzahl Spalten, die in die Breite passen diff --git a/frontend/src/views/DiaryView.vue b/frontend/src/views/DiaryView.vue index d727b45..49ff314 100644 --- a/frontend/src/views/DiaryView.vue +++ b/frontend/src/views/DiaryView.vue @@ -510,6 +510,14 @@ @close="closeGalleryDialog" >