회원 종료에 대한 목록 또는 레거시 CSV로 세션 권한 읽기
KSessionService and SecurityRoleController 매장 권리 목록<String> RoleRightType 이름. MemberSecurityController는 문자열로 던져서 분할합니다. comma, ClassCast회원 유형 및 회원 액세스 PATCH에 대한...
Verify-dns는 모든 KnownAliases 상표를 검사합니다; 선택에서 deprecated app/media를 건너십시오
DDL 및 harden 멀티 포드 경주를 방지
@Transactional syncAll() 내부 DDL을 넣는다. 알터 때 TABLE ADD CONSTRAINT는 기존의 제약 (일반적인 경우 후 첫 번째 부팅, 또는 멀티 포드 경주에서 파를 잃는), runIdempotent는 Java를 삼키 예외 — 하지만 주변 DB 거래는 낙태 ...
RoleRightsSyncService를 모든 부팅에 완전히 자기 치유
RoleRightType을 추가하거나 제거하려면 다시 실행해야 합니다. KamoInitializerService. syncAll()는 이제 3단계를 실행합니다. 1. 치유 제약 - 모든 CHECK 제약을 드롭 테이블과 두 개의 upsert-required 독특한 제약이 존재한다. Hi...
RoleRightsSyncService를 추출하고 sync-rights endpoint 추가
- RoleRightsSyncService: OrgRole 모두에 대한 역할 권한 동기화 논리를 중앙화 그리고 *********** 테이블; 시작 및 주문 - DataLoader: 시작에 RoleRightsSyncService.syncAll()에 위임 - SecurityRoleContr...
AppAvailability의 getOrganizationByIdWithFeatures 사용 회사연혁
/api/security/leads 및 모든 것에 LazyInitializationException을 해결합니다. 다른 CRM/POS-gated 경로. org.getFeatures()라는 인터셉터 거래 종료 후; 새로운 방법 eagerly fetches 기능 읽기 전용 거래 안쪽에 단일...
Resolve 회원 탭은 Hibernate TYPE() Base-class 문제로 비어 있는 것
Hibernate's TYPE(m) = :type JPQL 필터가 0 결과를 반환합니다. 매개 변수는 기본 회원 클래스 (JOINED 상속)입니다. 이 영향을 회원 구독 종료. findByOrganizationId() +로 교체 exampleof TeamMember filter in J...
Enable Hibernate SQL 로깅을 통해 회원 쿼리 반환 0
Temporarily 활성화 org.hibernate.SQL=DEBUG는 SQL이 TYPE()을 볼 수 있습니다. JPQL 쿼리는 회원 가입자 엔드포인트를 생성합니다.
GetMembersAndSubscribers endpoint에 진단 로깅 추가
Logs orgId, 쿼리 결과 수, 그리고 per-member isActive 상태 도움이 왜 회원 탭이 빈 리스트를 보여줍니다.
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 업데이트에 대한 재건 (appConfig upsert-only fix)
더 이상 AppConfig 행을 삭제하지 않은 ****************는 콜러의 페이로드에서 서비스 유형이 absent 인 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. - ********...
Surface root-cause on MasterModelController 실패
/api/security/master-model 500s를 얻을 때, 전체 스택 추적을 로그 stderr (kubectl logs에 의해 캡처 됨) 및 root-cause 메시지 포함 외부 Hibernate 래퍼 보다는 오히려 철사. schema 진단 마이그레이션 간격과 다른 opaqu...
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 ...
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...