Backend Management API implementation for self-service user portal: ✅ Task 2: Token Generation (already implemented in Phase 1) - UUID v4 generated at upload - Stored in groups.management_token - Returned in upload response ✅ Task 3: Token Validation API - GET /api/manage/:token - Validates token and loads complete group data - Returns group with images, consents, metadata - 404 for invalid/missing tokens ✅ Task 4: Consent Revocation API - PUT /api/manage/:token/consents - Revoke/restore workshop consent - Revoke/restore social media platform consents - Sets revoked=1, revoked_timestamp - Full error handling and validation ✅ Task 5: Metadata Edit API - PUT /api/manage/:token/metadata - Update title, description, name - Supports partial updates - Automatically sets approved=0 (returns to moderation) ✅ Task 6: Add Images API - POST /api/manage/:token/images - Upload new images to existing group - Calculates correct upload_order - Sets approved=0 on changes - Max 50 images per group validation - Preview generation support ✅ Task 7: Delete Image API - DELETE /api/manage/:token/images/:imageId - Deletes original and preview files - Removes DB entry - Sets approved=0 if group was approved - Prevents deletion of last image ⏳ Task 8: Delete Group API (in progress) - DELETE /api/manage/:token route created - Integration with existing GroupRepository.deleteGroup - Needs testing Technical Changes: - Created backend/src/routes/management.js - Added getGroupByManagementToken() to GroupRepository - Registered /api/manage routes in index.js - Installed uuid package for token generation - All routes use token validation helper - Docker-only development workflow Tested Features: - Token validation with real uploads - Workshop consent revoke/restore - Social media consent management - Metadata updates (full and partial) - Image upload with multipart/form-data - Image deletion with file cleanup - Error handling and edge cases |
||
|---|---|---|
| .. | ||
| src | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| package.json | ||