Add org-scoping, password length validation, and code quality improvements to PasswordChangeController
プレビューとエディタを単一のコヒーレントシステムに統一
- コンテンツ <td> セルをターゲティングする DOMParser によるシステムテンプレートコンテンツを抽出します。 メールフレームがブロックを再シリアライズしたときに重複を防ぐ - バックエンドプレビューのラウンドトリップをクライアント側から生成されたプレビューで置き換える SerializeFullEmail...
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 としてのみ保存されました。 サーバに送信されず、アバターセット無しで新しいユーザーを残します。 SVG を PNG blobs に送信時間に変換し、アップロードする 既存の登録写真エンドポイントでアバターがマイアカウントに表...
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...
Fix センタースクロールとシステムテンプレートブロックロード
- Eメールフレームからの高さ:100% を削除して、コンテンツを自然に成長させ、作品をスクロールします - 完全なHTMLシステムテンプレートから編集可能なブロックに<body>コンテンツを抽出
ブロックエディタにロードするときにcanonical HTMLから内部コンテンツを抽出
BodyBlocks が null と bodyHtml が <!DOCTYPE から始まるとき、 メインコンテンツ <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).
ブロックデザイナーのフルドキュメントボディHtmlのダブルラップを防止
BodyBlocks が null で、bodyHtml が完全な <!DOCTYPE html> ドキュメントの場合 (例:canonical シードテンプレート)、単一のブロックとしてインポート serializeFullEmailHtml を 2 番目の <!DOCTYPE html> シェルにラップします。 電...
隠し入力寸法をゼロにすることで検証ページレイアウトを復元
MUI Boxは数値幅/高さ値0〜1をパーセンテージとして解釈するので、 幅: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 は、マウント時に checkEmailByToken を呼び出すようになりました。 成功へのログインをリダイレクトします。失敗時にコードエントリに戻ります - アクティブコードボックスは青いリングを示していますので、ユーザーが入力している場所を知っている - 初期エラ...
Lift *** ウィジェット 上記 クリックツーフォーカスオーバーレイ (z-index)
オーバーレイ (position:absolute, z-index:0) は Capcha を覆いました DOM 注文で後で登場するのでウィジェット。 z-index:1 を追加する *** コンテナは、ポインタイベントが到達できるようにします.
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は、X-Forwarded-Hostをrequest.getServerName()で上書きします。 Host ヘッダーから。 明示的なホストヘッダがなければ、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...
Mutate は、カスケードの orphanRemoval エラーを回避するために、場所内のコレクションを提供しています
Org.setFeatures(newList) を呼び出すと、Hibernate-tracked persistent を置き換えます。 クエリが自動フラッシュをトリガーしたときに、JpaSystemException を引き起こしたコレクション 開いた EntityManager セッション (OpenEntity...
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 ではなく、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.
一般的なメッセージではなくセキュリティプロキシを介して上流エラーボディを渡す
以前は、non-2xx で {error: "Upstream error"} を返しました。 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...
階段年齢を防止ReqType キャッシュは、年齢チェックを誤って表示する
- Org ルート: 24h から 5min までの Redis TTL を減らし、reqTypeMember を追加 検出を stale するため、DB の変更後にセキュリティ フィールドが新鮮にとどまる - RegisterFlow: デフォルトでは、org がいる間に false に includeAgeChec...
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 を呼び出し、ドキュメントを更新します。 タイトル org がロードしたら 'Register - {org.title}' へ。 静的フォールバック in layout.tsx は 'Create Next App' から 'Register' に変...
宣言とカプチャスタイルのキャストの前に使用されるステップからTSエラーを解決する
メニュー useMemos が useEffects を上回る それらに応じて、CSSVariablesタイプをインポートし、Capchaウィジェットスタイルのプロップに使用します.
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.