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> 포탄에서 그것을 감싸기 ...
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 ...
이메일 검증 템플릿 개선 — URL fallback, expiry text, subject
- Copy-paste fallback로 버튼 아래의 일반 텍스트 검증 링크 추가 - {{expiryMinutes}}에서 {{expiryText}}으로의 폭발 변수를 전환하십시오. 인간 읽기 쉬운 체재 (예를들면 "1440 분 대신 1 일") - "당신의 {{orgName}} 계정과 관...
검색 결과를 찾을 수 없음 한국어 사전에
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.
템플릿에 외부 프레임이있는 전체 이메일 HTML을 직렬화
- serializeFullEmailHtml는 상표가 붙은 외부 구조에 있는 안 구획을 포장합니다 (헤드 로고, 제목/제목, 내용 영역, footer 로고 + org 이름) 절대 URL을 사용하므로 이메일 클라이언트는 이미지를 fetch 할 수 있습니다. - 외부 프레임 설정 (로고 옵...
이메일 검증 canonical 템플릿에 브랜드 외부 프레임 추가
적당한 이메일 포탄을 가진 안 내용 포장: org 이름을 가진 우두머리, 패딩된 내용 영역 및 발기. 식별자로 {{orgName}}을 사용합니다.
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...
토큰 링크 자동 검증 및 로그인으로 리디렉션; 코드 초점 표시 추가
- /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.
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...
컴팩트 편집기 헤더 - 큰 제목 / 탭을 제거, nav 행에 작업을 이동
끈끈한 우두머리 카드를 제거하십시오 (제목, 부제, 저장/암호/Preview 이메일TemplateEdit에서 버튼, 편집/검토 탭 바) ~200px 편집기 위의 수직 공간. 액션 버튼은 지금 바로 정렬 EmailTemplateManager의 기존 백 버튼/breadcrumb nav 행에...
Require *** 각 인증/수출 시도 전에 검증 페이지에
***는 각 활동 (교육 또는 실패) 후에 재시동합니다 그래서 신선한 해결은 각 후속 시도에 필요합니다.
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...
Redirect EMAIL NOT VERIFIED 에 등록/수신
로그인 페이지와 관련된 인라인 EmailVerifyCard 제거 상태/callbacks. EMAIL NOT VERIFIED에서, 사용자는 이제까지 전달됩니다 *********** 여기서 기존 PostCompletionScreen 핸들 resend 및 코드 입력.
로그인을 위한 /resend-verification 페이지 추가
?email을 허용하는 독립 /resend-verification 경로 생성 ?userId 쿼리 params, reusing PostCompletionScreen 일관된 이메일 검증 UX. RegisterResponse.alias를 선택해 주세요. 페이지는 등록 별칭 없이 작동합니다.
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.
Redesign 이메일 검증 화면 + 수정 이메일 버그 수정
- PostCompletionScreen : 애니메이션 org 배경으로 전체 페이지 레이아웃, glassmorphism 카드, 로고, 시각적인 6 손가락 부호 상자, 성공/verified 국가 - resendVerification: 요청 본문에 이메일 전달 (backend는 그것을 요구...
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...
GetOrganizationByDomain에서 eager 기능 로드 제거
특징은이 방법의 대부분의 통화자와 관련이 없습니다. (예: 등록, 로그인 도메인 해상도). setFeatures()를 통해 강제 로드 Hibernate-tracked 컬렉션을 대체하여 Cascade orphanRemoval 오류를 발생시킵니다. JPA를 통해 자연스럽게 게으른 로드를 제...
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 그래서 백엔드가 올바른 조직을 해결할 수 있습니다.
매치 kamo-internal avatar 저장 - 3 크기, MinIO, 별도의 업로드 단계
Crop 대화 상자는 이제 캔버스를 통해 3 PNG blobs (50/150/350px)을 생산합니다. kamo-internal's AvatarManager에. 등록 후 userId, blobs 반환 ****************에 POSTed (새로운 unauthenticated en...
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...
EMAIL NOT VERIFIED 오류를 부자 검증 카드로 교체
로그인이 EMAIL NOT VERIFIED로 실패하면 로그인 카드가 이제 대체됩니다. 광택 "Check your inbox"화면: 애니메이션 봉투 SVG 오프닝 플랩과 부동 스파클, 마스크 이메일 디스플레이, 30초 동안 이메일 버튼 SVG 카운트다운 링, 성공/error/rate-li...
AVIF 및 SVG 형식을 지원하는 사진 업로드 확장
이미지/avif 및 이미지/svg+xml 파일 입력에 추가 목록 및 유효한 regex. hint 레이블을 업데이트하여 모든 6 형식을 나열합니다. kamo-internal 이미 image/*를 수락하므로 변경이 필요 없습니다.
React-easy-crop 사진 편집기 추가
Kamo-internal's AvatarManager의 PhotoCropDialog를 미러: - 자르기 대화 상자는 파일 선택 후 즉시 열립니다. - 드래그하여 팬, 스크롤 또는 슬라이더를 통해 급상승 (1–5×) - dashed 원형 오버레이 가이드는 작물한 지역을 보여줍니다 - 화포...
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...
