feat(upload): Add consent validation and storage to batch upload
- Parse consent data from request body (workshopConsent, socialMediaConsents) - Validate workshop consent is required (400 error if missing) - Use createGroupWithConsent() instead of createGroup() - Pass consent data to repository for database storage - Maintains backward compatibility with existing upload flow - GDPR-compliant: no upload without explicit workshop consent
This commit is contained in:
parent
2f86158821
commit
6ba7f7bd33
|
|
@ -24,13 +24,24 @@ router.post(endpoints.UPLOAD_BATCH, async (req, res) => {
|
||||||
// Metadaten aus dem Request body
|
// Metadaten aus dem Request body
|
||||||
let metadata = {};
|
let metadata = {};
|
||||||
let descriptions = [];
|
let descriptions = [];
|
||||||
|
let consents = {};
|
||||||
try {
|
try {
|
||||||
metadata = req.body.metadata ? JSON.parse(req.body.metadata) : {};
|
metadata = req.body.metadata ? JSON.parse(req.body.metadata) : {};
|
||||||
descriptions = req.body.descriptions ? JSON.parse(req.body.descriptions) : [];
|
descriptions = req.body.descriptions ? JSON.parse(req.body.descriptions) : [];
|
||||||
|
consents = req.body.consents ? JSON.parse(req.body.consents) : {};
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error('Error parsing metadata/descriptions:', e);
|
console.error('Error parsing metadata/descriptions/consents:', e);
|
||||||
metadata = { description: req.body.description || "" };
|
metadata = { description: req.body.description || "" };
|
||||||
descriptions = [];
|
descriptions = [];
|
||||||
|
consents = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
// Validiere Workshop Consent (Pflichtfeld)
|
||||||
|
if (!consents.workshopConsent) {
|
||||||
|
return res.status(400).json({
|
||||||
|
error: 'Workshop consent required',
|
||||||
|
message: 'Die Zustimmung zur Anzeige in der Werkstatt ist erforderlich'
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Erstelle neue Upload-Gruppe mit erweiterten Metadaten
|
// Erstelle neue Upload-Gruppe mit erweiterten Metadaten
|
||||||
|
|
@ -100,8 +111,8 @@ router.post(endpoints.UPLOAD_BATCH, async (req, res) => {
|
||||||
console.error('Preview generation failed:', err);
|
console.error('Preview generation failed:', err);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Speichere Gruppe in SQLite
|
// Speichere Gruppe mit Consents in SQLite
|
||||||
await groupRepository.createGroup({
|
await groupRepository.createGroupWithConsent({
|
||||||
groupId: group.groupId,
|
groupId: group.groupId,
|
||||||
year: group.year,
|
year: group.year,
|
||||||
title: group.title,
|
title: group.title,
|
||||||
|
|
@ -130,7 +141,10 @@ router.post(endpoints.UPLOAD_BATCH, async (req, res) => {
|
||||||
imageDescription: imageDescription ? imageDescription.slice(0, 200) : null
|
imageDescription: imageDescription ? imageDescription.slice(0, 200) : null
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
});
|
},
|
||||||
|
consents.workshopConsent,
|
||||||
|
consents.socialMediaConsents || []
|
||||||
|
);
|
||||||
|
|
||||||
console.log(`Successfully saved group ${group.groupId} with ${files.length} images to database`);
|
console.log(`Successfully saved group ${group.groupId} with ${files.length} images to database`);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user