会員エンドポイントのリストまたはレガシーCSVとしてセッションの権利を読む
KSessionService および SecurityRoleController は List<String> として保存します。 RoleRightType の名前。 MemberSecurityControllerが文字列にキャストし、文字列を分割 comma は、メンバーシップ タイプとメンバーアクセス PA...
トランザクション中毒DDLを避け、マルチポッドレースを硬化させます
@Transactional syncAll() の内部に DDL を置いた前の自己ヒール。 いつの時 TABLE ADD CONSTRAINTは、既存の制約(最初の後に通常の場合)で消火 ブート、またはマルチポッドのレースでPodを失う)、runIdempotentはJavaを飲みました 例外 — しかし、周囲のDB...
すべてのブートでロールレイトシンクサービス完全に自己ヒーリングを作る
RoleRightTypeの追加または削除は、再び実行する必要がある KamoInitializerService. syncAll() は、すべての起動時に 3 つのフェーズを実行します。 1。 ヒール制約 - チェックの制約をすべての右ベアリングに落とします テーブルは2つのupsert-required固有の制...
RoleRightsSyncServiceを抽出し、sync-rightsエンドポイントを追加
- RoleRightsSyncService: OrgRoleのロール権利同期ロジックを一元化 メニュー テーブル、起動およびオンデマンド - DataLoader: 起動時にロールRightsSyncService.syncAll() に委任 - SecurityRoleController: POST /sync...
AppAvailabilityでgetOrganizationByIdWithFeaturesを使う インターセプター
/api/security/leads の LazyInitializationException を全て解決 他のCRM/POS関連のパス. org.getFeatures() というインターセプター トランザクションが閉じた後、新しいメソッドは熱心に機能します 読み取り専用トランザクション内の単一のJOIN FET...
Hibernate Type()ベースクラスの問題により、メンバータブが空の表示を解除
HibernateのTYPE(m) = :type JPQLフィルタは、バインド時に0結果を返します パラメータはベースメンバークラス(JOINED継承)です。 これは影響します メンバー登録者エンドポイント。 FindByOrganizationId() +で置換 ベースメンバーを正しく返すJavaのTeamMemb...
Hibernate SQL ロギングを有効にして、メンバーのクエリを返して診断します 0
Temporarily が org.hibernate.SQL=DEBUG を有効化し、どのような SQL が Type() なのかを確認できます。 JPQL クエリは、メンバー登録者エンドポイントで生成します.
GetMembersAndSubscribersエンドポイントに診断ロギングを追加
Logs orgId、クエリ結果のカウント、およびパーマンドは、アクティブ状態を手助けする メンバータブが空のリストを表示する理由を診断します.
Allow god-mode users to provision ownerless orgs; prefer FQDNs in domain resolution
Add @Transactional to provision-theme for lazy domain loading; remove hardcoded domain from provision request
Add PATCH /org/{id}/colors endpoint to safely update only color palette fields
Add theme provisioning — NATS publisher, provision-theme endpoint, logo upload
Use memberID session key and include creatorType in creatable branch-types response
Add GET /branch-types/creatable and /{id}/usages endpoints
/creatable returns branch types filtered by the caller's creator-type (OWNERS/TEAM_MEMBERS/MEMBERS) via AppliedModelEnforcementService. /{id}/usages returns th...
Use correct session key 'memberID' instead of 'MID'
KSessionService stores member ID under key 'memberID' but both **************** and OrganizationController were reading session.get("MID") which always returned...
Exclude master model from models list; add debug log to child-org creation check
SecurityModelController now filters out the org's master model (identified by org.getMasterModelID()) from the /api/security/models response — it is managed exc...
Read session rights as List<String> names, not CSV of integer IDs
Session rights are stored as a JSON array of RoleRightType name strings. Both **************** and OrganizationController were casting them to String (causing C...
Add GET /branch-types/creatable endpoint with creator-type filtering
Returns only the branch types the calling member is permitted to create a child org under, based on their OWNERS/TEAM_MEMBERS/MEMBERS classification against the...
Gate /network child-org creation by right + member-type applicability
Wires the applied-security-model child-org creation gate end-to-end: - SecurityModelController + MasterModelController round-trip the three new apply-to flag...
Kamo-shared-library update(appConfig upsert-only Fix)のリビルド
呼び出し元のペイロードからサービスタイプが不在であるappConfigの行を削除しなくなり、部分的なペイロードを受信したときにサイレントデータの損失を防ぐことができます.
Applied-model is the read-time source of truth for feature availability
Closes the "stale DB leaks a disabled feature" gap by gating every surface that touches OrgFeature / ServiceType through the applied security model. - ********...
MasterModelController GET の失敗の表面の根管
GET /api/security/master-model 500s の場合、全スタックトレースをログに記録します。 stderr (kubectl logs によってキャプチャ) と root-cause メッセージを含む 外側のHibernateのラッパーではなくワイヤー。 スキーマを診断するのに役立ちます クラ...
Wire applied-model enforcement across every controller
Every non-role setting on the applied security model is now enforced at the exact controller boundary it governs, and the scalar settings round-trip cleanly thr...
Enforce system-role assignment and auto-admin for team-member owners
MemberSecurityController now enforces the three assignment invariants defined in the brainstorm spec: - saveMemberSecurity: before persisting the caller's requ...
Master-model + applied-model endpoints and template-aware org seeding
Adds the controllers that surface the new branch-type security flow: - /api/security/master-model (GET/PUT) manages the current org's master model; only writ...
Add org-scoping, password length validation, and code quality improvements to PasswordChangeController
Add @Transactional to DataLoader.run to fix LazyInitializationException on startup
Use JPA entity traversal for grant-all detection (covers dept/job roles)
Supplement session rights with all known rights for grant-all roles
Filter null rights in buildAppliedRightsWithSources; upgrade shared-lib to 1.5.0
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...
Add SSE endpoint for real-time email verification + improve welcome email logging
Add resetCode to password reset email, add emailVerifyByCode endpoint, send WELCOME_MEMBER after email verification
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....
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 ...