Add CustomFormController for custom forms API endpoints
- Add REST controller at /api/security/custom-forms - Implement GET, POST, PUT, DELETE endpoints for form management - Support form structure with stacks and fi...
Add detailed logging to LeadVendorController for debugging title field issues
Update LeadVendorController to use title and description instead of name
Add LeadVendorController with full CRUD for vendors and products
Change LeadMarketDTO IDs to String to prevent JavaScript precision loss
Trigger rebuild to pick up updated kamo-shared-library with explicit repository queries
Add detailed logging to getMarketById for debugging market lookup issues
Trigger rebuild to pick up updated kamo-shared-library with String salesType in DTO
Return proper error message when market not found in getMarketById
Trigger rebuild to pick up updated kamo-shared-library with String salesType DTOs
Convert String salesType to SaleType enum in LeadMarketController
Add LeadMarketController for managing lead markets via REST API
Use organization streamGuid for organization-wide media feed
- Added OrganizationRepository to MediaStreamController - Updated getFeed to use organization's streamGuid instead of querying all sessions - Updated createPost...
Fix compilation errors in MediaStreamController
- Fixed missing closing brace in getFeed method else block - Replaced Map.of() with HashMap for compatibility - Fixed stream variable to be effectively final fo...
Rename MediaFeedController to MediaStreamController and add lead stream support
- Renamed MediaFeedController to MediaStreamController for generic media stream handling - Added support for lead-specific streams via streamGuid - Feed endpoin...
Add MediaFeedController for social media feed
- Add MediaFeedController with REST endpoints for posts, comments, likes - Implement paginated feed endpoint with access level filtering - Add image upload endp...
Add AccountController with endpoints for Members & Subscribers and Employees & Contractors
JobTitleController now uses pre-authenticated session from OTKPreAuthFilter to prevent 401 errors
SecurityRoleController now uses pre-authenticated session from OTKPreAuthFilter to prevent 401 errors
DomainController now uses pre-authenticated session from OTKPreAuthFilter to prevent 401 errors
Invalidate existing session before creating new one during login
- Check for existing *** cookie in login request - Delete/invalidate existing session before creating new one - Prevents reusing old session cookies when loggin...
Clear session data before deleting key to ensure session is unusable
- Set session data to empty JSON ({}) before deleting the key - Ensures session is unusable even if deletion fails or there's replication lag - Add error handli...
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...
Conductă de declanșare după actualizarea câmpului kamo-shared-library avatarType
Use avatarType field instead of complex proxy detection
- Check avatarType field directly for simple type checking - Set avatarType when creating new avatars - Much simpler and more performant approach
Interoghează toate avatarele de utilizator pentru a obține entitate reală în loc de proxy
- Obțineți userId de la avatar, apoi interogare găsiByUserId (returnează entități reale) - Găsiți potrivire avatar de pe listă și caz de verificare - Acest lucr...
Utilizați filtru simplu pentru a verifica dacă avatarul este foto sau Avatar Creator
- Elimina logica complexa de detectare proxy - Pur și simplu filtru găsiById rezultat pentru a verifica dacă este AvatarFoto - Dacă nu este vorba despre fotogra...
Utilizați Hibernat LazyInitializer pentru a obține clasa entității reale de la proxy
- Acceseaza HibernateProxy LazyInitializer pentru a obtine clasa persistenta - Verificaţi dacă clasa persistentă este AvatarFoto sau AvatarAvatar Creator - Iniţ...
Suprimă avertismente variabile neutilizate în detectarea tipului de avatar
Utilizaţi distribuţia directă pentru a determina tipul de avatar în loc de reflexie
- Încercați turnare la AvatarFoto primul pentru a forța inițializarea proxy - Access getFileExtension () direct dupa distributie - Retrageţi-vă la AvatarAvatar ...
Îmbunătățește detectarea tip proxy prin capturarea InvocationTargetException
- Manipulați clasaCastExcepție atunci când invocați metode pe proxy pentru a determina tipul real - Încercaţi să obţineţi FileExtension primul (foto), apoi obţi...
Îmbunătățește manipularea proxy hibernat pentru detectarea de tip avatar
- ierarhie clasa de căutare și interfețe pentru metoda getFileExtension - Utilizaţi reflecţia pentru a detecta AvatarFoto vs AvatarAvatar Creator atunci când in...
Reîncarcă avatarul din depozit pentru a rezolva instanța proxy hibernată a problemei
- Entităţile Avatare încărcate din relaţii pot fi proxies hibernare care eşuează instanţa de verificare - Reîncarcă avatarul din depozit pentru a obține tipul r...
Adăugați logare detaliată pentru a obțineThemeDomain și de a lua publicBucketUrl pentru a depana probleme de generare URL a avatar
Adaugă logare detaliată la generarea URL-ului avatar pentru depanare
- Jurnal atunci când sunt generate URL-uri avatar, ce URL-uri sunt create - Jurnal atunci când lipsesc avatare sau URL-urile sunt nule - Acest lucru va ajuta la...
Determină avatar activ prin verificarea utilizatorului.getAvatar() în loc de RecordState
- Platforma marchează acum corect ce acţionează avatarul prin compararea cu utilizatorul.getAvatar() - Acest lucru asigură steagul isActive în răspunsul API ref...
Adăugați URL-uri avatar la membrii de-departament cu mecanism de suprascriere
- Includeţi URL- ul avatar în fiecare răspuns al membrilor de la *************** - Respect mecanism de suprascriere: membru avatar (dacă există) ↠- Frontend p...
Manipulați formatul de date ISO și îmbunătățiți parizarea tip avatarId
- Suport adăugat pentru formatul datei ISO (AAAA-LL-ZZ) în plus faţă de M/d/aaaa - Imbunatatire avatarId parsing pentru a manipula Tipuri de numere (Duble, BigD...
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
Like what you see shipping?
All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.
