Add org-scoping, password length validation, and code quality improvements to PasswordChangeController
将预览和编辑器统一到一个统一的系统中
- 通过针对内容<td>单元格的DOMParser提取系统模板内容, EmailFrame 重排区块的序列时, 防止双接 - 将后端预览取而代之的是客户端预览 序列化 Full 电子邮件 Html( 块) , 因此预览总是匹配活编辑器 - 电子邮件TemplatePreview 现在接受html/subject(编辑)...
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 创建器上传到服务器
Avatar 创建者相机只作为 SVG 数据 URL 以本地形式存储 并且从未发送到服务器,留下新用户没有相机设定. 在提交时将 SVG 转换为 PNG blobs 并通过上传 已存在的寄存器- 相片端点, 因此该可显示于 My 账户 .
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> 内容到可编辑块
在块编辑器中加载时从 Cononical HTML 中提取内部内容
当体锁无效,体Html以 <!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是无效的,bodyHtml是一个完整的 <!DOCTYPE html > 文档时 (例如,犬科种子模板),作为单一块导入,引起 串行化 FullEmailHtml 以第二个 <!DOCTYPE html > shell 来将其包裹。 电子邮件客户端然后剥去嵌入的文档, 只显示内部 无外框的内容。 ...
通过将隐藏输入维度零化来恢复校验页面布局
MUI 框将数值宽度/ 高值 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.
连接自动验证并重定向到登录; 添加代码焦点指标
- 核查? 重定向以登录成功; 失败时返回代码条目 - 激活的代码框显示一个蓝色的环,让用户知道他们在打字 - 初始 Error prop 允许页面在链接失败时预排出一个错误
将 *** 部件上方单击到焦点覆盖(z-index)
重叠(位置:绝对,z-index:0)覆盖了Capcha号 部件,因为它出现在 DOM 顺序的后期 。 将 Z- 索引: 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...
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')...
设定主机/ X 前向位址, 所以 APIService 解析正确 org
APIService 覆盖 X 前置 Host 并请求. getServiceName (), 其内容如下 从主标题。 没有明确的主机头 K8s 内部服务 主机名已转发给 Security Service , 导致 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...
变异特性收集到位置以避免级联孤儿Removal出错
调用 org.setFeatures( 新列表) 取代 Hibernate 跟踪的持久性 集合, 当任何查询触发自动擦出时引起 JpaSystem 例外 在开放的实体管理器会话(开放实体管理器INView)中。 改变 带有清晰()+addAll()的现有收藏保留了跟踪引用.
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
安全服务/登记/再发核查 期待在体内的电子邮件, 非用户ID( 登录错误响应从未包含) 。 未来 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上,失去真实 安全服务发送的错误消息 。 现在直接转发状态代码和机身.
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 年龄 ReqType 缓存错误显示年龄检查
- Org路线:将Redis TTL从24h降低到5min并增加年龄ReqType Member 以阻断检测, 这样安全字段在 DB 更改后保持新鲜 。 - 注册 Flow: 默认应在 org 时插入年龄检查为虚假 装入而不是真实,防止投机年龄检查插入
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...
设置浏览器标签标题为“ 注册 - {org name} ”
动态MetaLoader现在呼叫使用ThemeConfig并更新文档. 标题 到“ register - {org.title} ” 。 静态后退 布局.tsx 从“ 创建下一个 App ” 改为“ 注册 ” .
解析声明前所用的步骤中的 TS 错误和 Capcha 样式
移动QQ 在使用效果上方使用备忘录 依赖它们; 导入 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.