Update EMAIL_VERIFICATION sample vars to match current template
Use expiryText instead of expiryMinutes (renamed variable), and update verifyLink to point to the register subdomain (correct send path).
Prevenirea dubla-ambalare de corp complet documentHtml în bloc designer
Când bodyBlocks este nul și bodyHtml este un document complet <!DOCTYPE html> (de exemplu, șabloane însămânțate canonice), importând-o ca un singur bloc cauzat ...
Pass human-readable expiry time to email verification template
Add humanizeMinutes() helper that formats minutes as days/hours/minutes (e.g. "1 day" for 1440 min). Pass as {{expiryText}} to match updated canonical template ...
Îmbunătățește șablonul de verificare a e-mailului
- Adăugați link-ul de verificare text simplu de mai jos buton ca copie-pastă de rezervă - Comutarea variabilei de expirare de la {expiryMinutes}} la {expiryText...
Restaurarea aspectului paginii de verificare prin zeroarea dimensiunilor de intrare ascunse
Caseta MUI interpretează valorile de lățime/înălțime numerică 0 lățimea:1 a făcut intrarea ascuns acoperă cardul complet. Schimbat la 0 astfel încât intrarea es...
Preserve DB domain case in NoReply from address
Removed toLowerCase() — the domain already comes from resolvePrimaryDomain which reads org_domains from the database, so case is canonical from DB.
Searalize full email HTML cu cadru exterior pe șablon salva
- serializeFullEmailHtml infasoara blocuri interioare in cadrul exterior marcat (sigla antetului, titlu/subtitrare, zona de conținut, logo-ul subsolului + denum...
Adaugă cadru exterior de marcă în șablonul canonic de verificare e-mail
Învelește conținutul interior cu o coajă de e-mail corespunzătoare: antet cu nume de org, zona de conținut căptușit, și Footer. Se utilizează ca identificator {...
Add code-based email verification path to /verify-email endpoint
The endpoint now handles both token (link click) and userId+code (manual 6-digit entry). Token path unchanged; code path hashes the supplied code and matches ag...
Token link auto-verifică și redirecționează către autentificare; adăugați indicatorul de focalizare cod
- /verification?token=xx acum apeluri verifica EmailByToken pe Mount și redirecționează către autentificarea succesului; cade înapoi la codul de intrare pe eșec...
Lift *** widget deasupra click-to-focus overlay (z-index)
Suprapunerea (poziţia:absolut, z-index:0) acoperea Capcha widget pentru că a apărut mai târziu în ordinea DOM. Adăugare z-index:1 Containerul permite ca evenime...
Remove nonexistent postfix-lmdb package, install lmdb library instead
postfix-lmdb is not a valid Alpine package; lmdb support is built into the base postfix package. The pod was CrashLoopBackOff due to apk failure.
Add weekly image prune and journal vacuum CronJob for k1m1
CronJob runs every Sunday 3am, privileged, pinned to k1m1. - crictl rmi --prune removes unused container images - nsenter journal vacuum enforces 500MB cap - CI...
Fix Docs image registry, add Recreate strategy to coturn/postfix, increase qdrant memory
- Docs: fix wrong image registry (redis.kamo.svc... → **************** add Recreate strategy - coturn: add Recreate strategy to prevent rolling update port conf...
Antet de editor compactă
Elimină antetul lipicios (titlu, subtitlu, Save/Cancel/Preview) butoane, Editare/Previzualizare tab bar) de la EmailTemplateEdit la revendicare ~200px de spațiu...
Necesită *** pe pagina de verificare înainte de fiecare încercare de verificare/retrimitere
*** este resetat după fiecare acțiune (succes sau eșec) astfel încât un nou rezolvarea este necesară pentru fiecare încercare ulterioară.
Switch Postfix sasl_passwd from hash to lmdb format
Alpine postfix build does not include hash support — postmap and smtp_sasl_password_maps were silently failing, deferring every outbound relay attempt through s...
Redirect la /verificare după înregistrare în loc de redarea în linie
Păstrează URL-ul exact .
Resolve root domain for NoReply from-address instead of bare subdomain
resolvePrimaryDomain() was returning the first domain entry (e.g. "www") which produced NoReply@www. Now prefers root domains (parent == null) so transactional ...
Populate all EMAIL_VERIFICATION template variables
Was sending only {token, code} — template also needs orgName, firstName, verifyLink, and expiryMinutes. Load org and user to build the full vars map, and resolv...
Actualizare redirecționare de la /resend-verificare la /verificare pe site-ul de înregistrare
Add internal.auth.secret to EmailService configmap
InternalAuthFilter was rejecting all service-to-service calls (send, seed-org) with 503 because internal.auth.secret was unconfigured. Matches the same INTERNAL...
Redirect EMAIL NOT VERIFICAT to register/resend-verification
Elimină e-mailul onlineVerifyCard din pagina de autentificare și toate asociate state/callbacks. Pe EMAIL NOT VERIFICAT, utilizatorul este acum transmis la E o ...
Adaugă /resend-verification page for login redirections
Creează o rută independentă /resend-verificare care acceptă ?email și ?userId interogare params, reusing PostCompletionScreen for a consistente verificare e-mai...
Lărgiți cardul de verificare la 32rem pentru a preveni ambalarea etichetei butonului
Allow transactional send on port-25 relay and auto-seed missing templates
Port-25 SMTP (postfix) requires no auth — transactionalCredentials() was throwing ProviderUnavailableException when user/pass were unconfigured, blocking all ve...
Use subdomain-aware SQL to match findByDomain JPQL logic
Org domain lookup in resendVerification was doing an exact-match query that failed for subdomains stored as child records (e.g. 'api' with parent 'kamocrm.com')...
Setează gazda/X-forwarded-Host astfel APIService rezolvă org corect
APIService suprascrie X-forwarded-Host cu cerere.getServerName(), care citește din antetul gazdei. Fără un antet gazdă explicit serviciul intern K8s numele gazd...
Correct EmailService URL port in configmap (4203 -> 80)
EmailService K8s service exposes port 80, not 4203. Verification emails were timing out on every registration attempt.
Redesign email screen de verificare + fix resend email bug
- PostCompletionScreen: full-page layout cu fundal animat org, card de sticlorfism, logo, cutii de coduri vizuale cu 6 cifre, stări de succes/verificate - resen...
Bypass JPA org lookup to avoid Hibernate cascade flush error
**************** triggers **************** which causes a Hibernate auto-flush. That flush fails because Organization.features was previously replaced with a pl...
Eliminați încărcarea de caracteristici dornice de la getOrganizationByDomain
Caracteristicile sunt o preocupare la nivel de org fără legătură cu majoritatea apelanţilor acestei metode (de exemplu, înregistrarea, rezoluția domeniului de a...
Mutați elemente de colectare în loc pentru a evita orfană cascadă Eroare de memorie
Calling org.setFeatures (newList) înlocuiește Hibernate-tracked persistent colectare, provocând JpaSystemException atunci când orice interogare declanşează auto...
Use getReferenceById to avoid cascade orphanRemoval flush error on registration
Loading Organization via findById inside @Transactional caused Hibernate to detect the features collection was de-referenced during auto-flush, throwing JpaSyst...
Retrimite verificarea folosind e-mail nu userId, înainte X-forwarded-Host
SecurityService /register/resend-verification se așteaptă la e-mail în organism; nu userId (pe care răspunsul de eroare de autentificare nu îl include niciodată...
Meci de stocare kamo-internal avatar
Dialog cultură produce acum trei PNG pete (50/150/350px) prin pânză, identice la Avatar Manager kamo-intern. După înregistrare returnează utilizatorId, petele S...
Add register-photo endpoint for unauthenticated post-registration avatar upload
POST **************** accepts userId + file/fileSm/fileMd/fileLg without a session. Guards: user must be unverified and have no avatar yet, preventing abuse aga...
Înlocuiește eroarea EMAIL NOT VERIFICATĂ cu cardul bogat de verificare
Atunci când login-ul nu reușește cu EMAIL NOT VERIFICAT cardul de autentificare este înlocuit acum cu un lustruit "Verificați ecranul inbox": animat plic SVG cu...
Extindeți încărcarea fotografiilor pentru a suporta formatele AVIF și SVG
Adaugă imagine/avif și imagine/svg+xml în lista de intrare a fișierului accepta și Regulamentul de validare. Actualizează eticheta indiciu pentru a lista toate ...
Adăugați editorul foto react-easy-crop la etapa de încărcare a înregistrării
Oglinzi PhotoCropDialog de la Avatar Manager kamo-intern: - dialogul de cultură se deschide imediat după selectarea fișierului - tigaie prin tragere, zoom prin ...
Add dao.repositories to JPA scan so EmailTemplateRepository is found
Same pattern as KamoInitializerService — explicit basePackages overrides default scanning and must include every package that has repositories.
Treceți corpul de eroare din amonte prin proxy de securitate în loc de mesaj generic
Din episoadele anterioare: mesaj de eroare de la Serviciul de Securitate. Acum transmite direct codul de stare şi corpul.
Align registration field names and response shape with frontend contract
Frontend sends nameFirst/nameLast but controller read firstName/lastName, causing 400 "First name is required". Success response now returns {status, userId, al...
Înlocuiți Caching sesiune Redis cu Java directă API aduce în org traseu
Preveniți vârsta vecheReqType cache de la afișarea incorectă a verificării vârstei
- Traseu Org: reduce Redis TTL de la 24h la 5min și adaugă vârstaReqTypeMember să se oprească detectarea astfel încât câmpurile de securitate să rămână proaspet...
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.
