Improve logout cookie clearing - clear cookies across all domain/path combinations
- Clear cookies with base domain (e.g., .kamocrm.com) to cover all subdomains - Clear cookies for current hostname without domain attribute - Clear cookies unre...
Тригерний трубопровід після оновлення камо-шаредно-ліберного аватару
Use avatarType field instead of complex proxy detection
- Перевірте поле avatarType безпосередньо для перевірки простого типу - Встановити аватарТип при створенні нових аватар - Більш простий і більш функціональний п...
Запитайте всі аватари користувачів, щоб отримати реальну особу замість проксі
- Отримати UserId з аватара, потім знайти запитуByUserId (повернення реальних суб'єктів) - Знайдіть відповідні аватар з списку та перевірте екземпляр - Це дозво...
Використовуйте простий фільтр для перевірки, якщо avatar є фото або Avatar Creator
- Вилучити складну логіку виявлення проксі - Просто відфільтруйте FindById результат, щоб перевірити, чи це AvatarPhoto - Якщо не фото, за замовчуванням до Avat...
Використовуйте Hibernate LazyInitializer для отримання фактичного класу суб'єкта з проксі
- Доступ HibernateProxy's LazyInitializer для отримання стійкий клас - Перевірте, чи стійкий клас є AvatarPhoto або AvatarAvatar Creator - Прискорення ініціаліз...
Suppress невикористані змінні попередження в виявлення типу аватара
Використовуйте прямий ролик для визначення типу аватар замість відбиття
- Спробуйте лиття до AvatarPhoto першим для примусової ініціалізації проксі - Доступ getFileExtension() безпосередньо після лиття - Падіння назад до AvatarAvata...
Покращити виявлення проксі-типу за допомогою ловлювання InvocationTargetException
- Handle ClassCastException при виклику методів на проксі для визначення фактичного типу - Спробуйте getFileExtension first (фото), потім getStyle (Avatar Creat...
Покращити гібернати проксі-обробку для виявлення аватарного типу
- Пошук клас ієрархії та інтерфейси для getFileExtension метод - Використовуйте відображення для виявлення AvatarPhoto проти AvatarAvatar Creator, коли екземпля...
Перевантаження аватару з репозиторій для вирішення проблеми гіберната проксі
- Аватарські суб'єкти, завантажені з відносин, можуть бути Хібернатні проксі, які не мають екземпляру перевірок - Перевантажити аватар з репозиторій, щоб отрима...
Додати детальний журнал, щоб отриматиThemeDomain і отриматиПублічнийBucketUrl для видалення avatar проблеми генерації URL-адрес
Додайте детальний запис до створення URL-адреси аватару для деbugging
- Увійдіть, коли створюються URL-адреси, які URL-адреси - Увійдіть при відсутності аватар або URL-адрес - Це допоможе визначити, чому аватари не відображаються ...
Визначити активний аватар, перевіривши користувача.getAvatar() замість RecordState
- Закінчуйте зараз правильні позначки, які аватар активний, порівнюючи з користувачем.getAvatar() - Це забезпечує фактичний прапор у відповідь API, що відобража...
Додати URL-адресу аватару для членів за допомогою кінцевої точки входу з механізмом перевизначення
- Включіть avatar URL в кожен учасник відповідь від *********** - Повага механізму перевизначення: аватар учасника (якщо є) аватар користувача âot (default) - F...
Ручний формат ISO і поліпшення аватарІдного типу
- Додано підтримку формату ISO дата (YYYY-MM-DDDD) на додаток до M/d/yyyyyyyy - Удосконалено аватарІдний парсінг для обробки типів чисел (подвійний, BigDecimal ...
Add better error handling and logging for user/member save operations
- Added try-catch around user save operation with detailed error logging - Added try-catch around member save operation with detailed error logging - Improved d...
Improve avatarId parsing to handle string, integer, and long types
- Added support for parsing avatarId from String type - Better error handling for invalid avatarId formats - Added logging for avatar assignment and errors
Add detailed logging to updateMemberProfile for debugging
- Added logging at start of updateMemberProfile method - Added logging before and after saving user and member - Improved error response to include error detail...
Add support for updating user name fields and dateOfBirth in member profile
- Added UserRepository to MemberController - Updated updateMemberProfile to handle namePrefix, nameFirst, nameMiddle, nameLast, nameSuffix, nameFirstAKA, nameLa...
Store avatar hash and extension in *** session data
- Added updateSession method to KSessionService for updating session fields - Updated setActiveAvatar to store userAvatarHash and userAvatarExtension in session...
Include avatar URLs in member profile response
- Added helper methods to generate avatar URLs (getThemeDomain, getPublicBucketName, generateFileHash, getPublicBucketUrl, generateAvatarUrl) - Updated getMembe...
Add ThemeBackgroundController with hash-based storage and public bucket support
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
Generate presigned URL зазвичай потім замініть ім'я хоста з темним доменом
Використовуйте getPresignedUrlWithEndpoint з темним доменом для всіх аватарних URL
Використовуйте метод getPresignedUrl, який працює замість getPresignedUrlWithEndpoint
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
Як ви бачите відправлення?
Кожен з цих оновлень землі в робочому просторі автоматично. Почати вільний час і дивитися його на тиждень після тижня.