Use correct bucket and object path structure for MinIO uploads
- Change bucket name from domain-based to 'public' bucket - Include domain path (e.g., kamocrm-com) as part of object name, not bucket name - Fix object path st...
Properly handle MinIO upload failures for avatars
- Remove silent exception swallowing in Avatar Creator avatar creation - Add proper error handling and rollback for failed uploads - Delete database record if f...
Remove ID-based fallback code, use only hash-based naming
- Remove all try-catch fallback logic for missing fileHash column - Remove ID-based file naming fallbacks - Code now exclusively uses hash-based file storage - ...
Handle missing fileHash column gracefully
- Add try-catch around fileHash access to handle missing database column - Fall back to ID-based file naming if fileHash column doesn't exist yet - Allows code ...
Implement hash-based file storage for avatars
- Generate SHA-256 hash from avatar ID after persistence - Store hash in database fileHash field - Upload files to MinIO using hash-based naming: {hash}.{fileEx...
Add logging and ensure public bucket URL format matches working pattern
Revert to getPresignedUrl like backgrounds - getPresignedUrlWithEndpoint was breaking uploads
Add retry logic for Maven dependency downloads to handle transient Central failures
Rebuild avatar system - backend generates presigned URLs directly like backgrounds
Simplify StorageController - validate OTK, get image, stream it
Add detailed logging to avatar URL generation to identify failures
Generate presigned URLs with theme domain directly in backend for avatars
Return objectPath instead of presigned URLs - Next.js will generate them
Use getPresignedUrlWithEndpoint to generate URLs with correct signature for theme domain
Simplify avatar URL generation - use same logic as frontend getThemePath, just replace endpoint in presigned URL
Replace internal IP endpoint with theme domain in presigned URLs as fallback
Add comprehensive logging to avatar URL generation to debug empty URLs
Use getPresignedUrlWithEndpoint to generate URLs signed for theme domain - no endpoint replacement needed
사전 서명된 URL을 생성하고 테마 도메인으로 엔드포인트를 대체하십시오 - theme.* alias는 MinIO에 직접 점
할당 된 URL 대신 아바타에 대한 프록시 URL을 반환 - 아바타 지금 사용 /api/storage/avatars 프록시 루트
Generate presigned URLs with theme domain endpoint for signed avatar image access
Return /internal/ paths instead of presigned URLs, let frontend use theme domain like ThemeLogo
Restore StorageController with correct session extraction method
Remove StorageController and use theme domain paths for all avatar URLs
Use theme domain paths instead of presigned URLs for avatar images to fix mixed content issues
Add storage proxy endpoint and use proxy URLs instead of direct MinIO URLs to fix mixed content issues
Ensure avatar URLs are always set (empty string if file missing), check file existence before generating presigned URLs
Organize MinIO storage with folder structure and add Avatar Creator SVG support
- Updated storage paths to use organized folder structure: * members/avatars/photos/ for photo avatars * members/avatars/vector/ for Avatar Creator SVG avat...
Add avatar, background, and member profile management endpoints
- Added AvatarController with CRUD operations for avatars (photo and Avatar Creator) - Added UserBackgroundController for managing user background images - Exte...
