Add org-scoping, password length validation, and code quality improvements to PasswordChangeController
미리보기 및 편집기를 단일 coherent 시스템에 통합
- DOMParser를 통해 시스템 템플릿 콘텐츠를 추출 <td> 셀, emailFrame이 블록을 재축일할 때 더블 위핑 방지 - 백엔드 미리보기 라운드 트립을 클라이언트 사이드 프리뷰로 교체 serializeFullEmailHtml (블록) 그래서 미리는 항상 라이브 편집기 일치 -...
Add @Transactional to DataLoader.run to fix LazyInitializationException on startup
Use JPA entity traversal for grant-all detection (covers dept/job roles)
Filter null rights in buildAppliedRightsWithSources; upgrade shared-lib to 1.5.0
등록 후 Avatar Creator avatar를 서버로 업로드
Avatar Creator avatars는 로컬 양식의 SVG 데이터 URL로만 저장되었습니다. 서버로 전송하지 않고, avatar 설정 없이 새로운 사용자를 떠난다. 제출 시간에 SVG를 PNG blobs로 변환하고 업로드 기존의 register-photo endpoint 그래서 av...
Use core NATS pub/sub for email-verified SSE fan-out
Replaces in-memory ConcurrentHashMap broadcast with NATS core pub/sub so all pods receive verification events regardless of which pod handled the token. Falls b...
수정 센터 스크롤 및 시스템 템플릿 블록 로딩
- 고도를 제거하십시오: EmailFrame에서 100% 이렇게 내용은 자연적으로 성장하고 일폭은 작동합니다 - 완전한 HTML 시스템 템플릿에서 <body> 콘텐츠 추출
블록 편집기에서 로딩 할 때 canonical HTML에서 내부 내용을 추출
BodyBlocks가 null과 bodyHtml가 <!DOCTYPE로 시작되면 추출 main content <td> 으로 초기 HTML 블록 그래서 사용자가 기존을 볼 수 빈 편집기 대신 콘텐츠.
Use avatarType field + JDBC for photo URL generation to handle Hibernate proxies
**************** previously used instanceof AvatarPhoto to determine avatar type and cast to read fileExtension. When Hibernate returns a base-class proxy (e.g....
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).
블록 디자이너에 있는 Full-document bodyHtml의 double-wrapping
BodyBlocks가 null이고 bodyHtml는 전체 <!DOCTYPE html> 문서입니다. (예 : canonical Seeded Templates), 단일 블록으로 가져 오기 serializeFullEmailHtml는 두번째 <!DOCTYPE html> 포탄에서 그것을 감싸기 ...
검색 결과를 찾을 수 없음 한국어 사전에
MUI Box는 수치 폭/높이 값 0–1을 비율로 해석하므로 width:1 숨겨진 입력 커버 전체 카드. 0으로 변경 입력은 보이지 않지만 레이아웃을 방해하지 않습니다.
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.
토큰 링크 자동 검증 및 로그인으로 리디렉션; 코드 초점 표시 추가
- /verification?token=xxx 지금 호출 확인EmailByToken 마운트 및 성공에 로그인하는 리디렉션; 실패에 대한 코드 입력으로 돌아갑니다 - Active code box는 파란색 링을 보여주기 때문에 사용자가 입력한 위치를 알고 있습니다. - InitialErro...
Lift *** 위젯 위 click-to-focus 오버레이 (z-index)
오버레이 (위치:absolute, z-index:0)는 Capcha를 덮었습니다. 나중에 DOM 순서에 나타나기 때문에 위젯. z-index를 추가: *** 콘테이너는 포인터 사건이 그것을 도달합니다.
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.
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...
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...
렌더링 인라인 대신 등록 후 /verification로 이동합니다
URL을 정확하게 유지 - 브라우저는 /verification /member를 보여줍니다.
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...
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...
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')...
Host/X-Forwarded-Host를 설정하면 APIService가 올바른 org를 해결합니다
APIService overwrites X-Forwarded-Host with request.getServerName(), 이는 읽기 호스트 헤더에서. 명시된 호스트 헤더 없이 K8s 내부 서비스 hostname은 SecurityService에 전달되었습니다. org는 아무것도 돌려보내...
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.
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...
Cascade orphanRemoval 오류를 피하기 위해 in-place를 수집합니다
Org.setFeatures(newList) 호출은 Hibernate-tracked persistent를 대체합니다. 수집, JpaSystemException 어떤 쿼리 트리거 자동-플래시 열린 EntityManager 세션에서 (OpenEntityManagerInView). 관련 기사...
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...
이메일을 사용하여 인증은 userId, forward X-Forwarded-Host
SecurityService /register/resend-verification는 몸에 이메일을 기대합니다. userId (그 로그인 오류 응답이 포함되지 않음). 현재 위치 X-Forwarded-Host 그래서 백엔드가 올바른 조직을 해결할 수 있습니다.
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.
대신 보안 프록시를 통해 업스트림 오류 몸 전달
너무 이른 반환 {error: "업스트림 오류"} 비-2xx, 잃는 실제 SecurityService의 오류 메시지. 이제 상태 코드와 몸을 직접 전달합니다.
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...
Stale ageReqType 캐시를 방지하십시오
- Org 노선: Redis TTL을 24시간에서 5분으로 줄이고, ageReqTypeMember를 추가합니다. to stale detection so security field stay 신선한 후 DB 변경 - RegisterFlow: default shouldIncludeAgeChe...
Add SecurityService and dao.repositories to EnableJpaRepositories scan
UserPhoneLookupRepository in recovery package was not picked up because EnableJpaRepositories only listed dao.repos and commerce. Added the SecurityService base...
'Register - {org name}'에 브라우저 탭 제목을 설정합니다
DynamicMetaLoader는 이제 useThemeConfig 및 업데이트 문서를 호출합니다. 이름 * 'Register - {org.title}'을 한 번에 org 로드합니다. 정체되는 fallback에서 layout.tsx는 'Create Next App'에서 'Register'...
선언 및 Capcha 스타일 캐스트 전에 사용되는 단계의 TS 오류를 해결
이동 *********** useMemos 위 useEffects 그 그들에 따라; CSSVariables 유형을 가져오고 Capcha-widget 작풍 버팀대를 위해 그것을 사용하십시오.
Add dao.repositories to EnableJpaRepositories scan
EmailTemplateRepository lives under dao.repositories.email, not dao.repos, so it was not picked up as a Spring bean.