Commit Graph
100 Commits
Author SHA1 Message Date
chan a96ef3d204 fix(i18n): fix duplicate TOML section for ui.admin.tenants
- Prevent template overwrite caused by duplicate section parsing logic
- Ensures '테넌트 목록' correctly renders instead of '테넌트 구성원 ({{count}})'
2026-04-10 15:58:56 +09:00
chan addb0fe042 fix(adminfront): fix e2e test assertions and biome linter errors
- Fix strict biome errors in OrgChartUploadModal and TenantOrgChartPage (key indices, any types, aria roles, hook dependencies)
- Fix duplicate translation blocks that broke the i18n parser
- Fix UI label assertions in Playwright e2e tests due to updated i18n keys
2026-04-10 15:12:09 +09:00
chan 4293013d4f chore(i18n): sync adminfront locales with new keys
- Adminfront 화면에 표시될 한국어/영어 문구(테넌트 검색, 총 n개 로그 등) 추가
2026-04-10 14:49:19 +09:00
chan ec0c6eae26 fix(adminfront): resolve typescript build errors on CI
- Fix missing position and jobTitle properties in BulkUserItem interface
- Fix incorrect reference to undefined total property in AuditLogsPage (reverted to logs.length)
2026-04-10 14:43:56 +09:00
chan ea90327507 fix(tests): resolve failing go tests and segfaults due to missing mock interface implementations
- MockKratosAdminService 및 MockTenantService에 새로 추가된 인터페이스 메소드(CreateUser, ListIdentitySessions 등) 구현 추가
- 회원가입 테스트(auth_handler_signup_test.go) 시, isAffiliateTenant 검증 과정에서 TenantService가 nil일 때 발생하는 segfault 방지 로직 보강
- Mock 객체 반환값 타입 불일치 및 testify/mock 매개변수 에러 등 테스트 의존성 전반 수정
2026-04-10 14:40:16 +09:00
chan c312d4cc6d chore(i18n): sync locales with new UI keys
- 누락되었던 테넌트 조직, 사용자 상태, API Key 갯수 등 8개의 번역 키 추가
2026-04-10 14:06:02 +09:00
chan 5a84e9f6cc Merge branch 'dev' into fix/rebac-env-sync-issue 2026-04-10 13:52:07 +09:00
chan 349cdf5fcd feat(org): 조직도 렌더링 및 동기화 로직 대폭 개선, 역할(Role) 강제화, 탭 정리
- 조직도 렌더링 시 너비 동적 계산 및 스크롤 문제 해결
- 하위 조직(Leaf)을 부모 박스 내부에 임베딩하여 2열로 깔끔하게 표시되도록 조직도 UI 전면 개편
- 사용자 생성/수정 및 CSV 업로드 시 직급(Position)과 직무(JobTitle)가 정상적으로 Kratos 및 로컬 DB에 동기화되도록 백엔드 API 수정
- CSV 조직도 업로드 시 계층 구분을 '/' 대신 ' > '로 변경하여 이름에 '/'가 포함된 부서(예: 평면/셀)가 분리되지 않도록 보호
- 잘못 입력된 과거 직책 데이터(팀장, 그룹장 등)를 'user' 권한으로 일괄 초기화하고, 이후 'role' 필드에 시스템 권한(user, tenant_admin, super_admin) 외의 값이 들어오지 않도록 백엔드 정규화 로직 강화
- 사용자 목록 페이지의 페이지네이션 제한을 50명에서 1000명으로 상향 조정
- 테넌트 목록 페이지에 이름/슬러그 기반 검색 기능 추가
- 관리자 UI 전반에서 불필요한 배지(Admin only, System 등) 제거 및 테넌트 상세 페이지의 미사용 '외부 연동' 탭 삭제
2026-04-10 13:48:12 +09:00
chan 5211842d47 조직도 기능 추가 2026-04-10 11:38:47 +09:00
chan 6971b69b79 feat(admin): add org chart bulk import button to main tenants list page (#500) 2026-04-07 16:42:23 +09:00
chan 02255116f4 feat(org): enhance bulk import to support multi-level hierarchy, auto-provision users, and map matrix organizations (#500) 2026-04-07 15:34:25 +09:00
chan b3a7f47cf7 feat(auth): lock affiliation type on frontend based on verified email domain (#500) 2026-04-07 14:03:02 +09:00
chan 4e7f3e7235 feat(auth): enforce explicit tenant selection and dynamic filtering (#500)
- Refactor `GetActiveTenants` to filter dynamically based on the email domain, removing hardcoded affiliate slugs.
- Update `Signup` to require an explicit `CompanyCode` choice for internal domains, removing automatic provisioning and implicit tenant assignment.
- Add markdown diagram detailing the revised, secure B2B2B dynamic provisioning and inheritance flow.
2026-04-07 11:58:50 +09:00
chan 97a60ead91 fix: resolve syntax error in signup_screen caused by redundant closing brace 2026-04-06 17:37:34 +09:00
chan 43ec19e94f feat: remove auto-selection of affiliate by email domain and clean up UI 2026-04-06 17:20:02 +09:00
chan 332ac9c0d8 feat: dynamic frontend tenant dropdown 2026-04-06 16:56:33 +09:00
chan 46db7ac026 fix: handle json parse exceptions on 404/500 signup responses gracefully 2026-04-06 16:29:08 +09:00
chan c78604df06 feat: implement dynamic tenant provisioning and remove hardcoded company mappings 2026-04-06 16:13:03 +09:00
chan cdf2c36915 Merge pull request 'fix/rebac-env-sync-issue' (#517) from fix/rebac-env-sync-issue into dev
Reviewed-on: baron/baron-sso#517
2026-04-06 13:23:14 +09:00
chan 003f12f008 test: add mock outbox expectations for super_admin relations in tenant service tests 2026-04-06 13:11:30 +09:00
chan aaa3dc2fb9 fix: use vite preview in staging to support api proxy in frontends 2026-04-06 11:47:33 +09:00
chan 583755c189 fix: improve keto sync reliability and initial rebac permissions for super admin 2026-04-06 10:10:27 +09:00
chan bd296f9425 Merge pull request 'feat/fam-tanent' (#511) from feat/fam-tanent into dev
Reviewed-on: baron/baron-sso#511
2026-04-03 15:20:01 +09:00
chan 95aba376b1 chore: fix workspace formatting (devfront, backend, adminfront) 2026-04-03 15:12:27 +09:00
chan 59d53bc1b2 chore(adminfront): fix Biome formatting issues 2026-04-03 15:03:08 +09:00
chan a65f9afc69 chore(adminfront): fix Biome lint error in user E2E test 2026-04-03 15:00:57 +09:00
chan 94520db699 test(adminfront): fix Playwright E2E tests for user and schema management 2026-04-03 14:48:04 +09:00
chan bae35dd8a5 chore(ci): disable auto-open of playwright html reporter 2026-04-03 11:48:38 +09:00
chan 02a52fdb38 test(adminfront): fix flaky tests caused by missing dynamic loginId field and greedy URL mocks 2026-04-03 11:43:16 +09:00
chan 692670a081 fix(adminfront): fix type errors in UserDetailPage causing build failures in CI 2026-04-03 10:27:26 +09:00
chan 8dacb9ddba perf(ci): use vite build and preview in playwright to speed up E2E tests 2026-04-03 10:09:42 +09:00
chan e200f4a59a chore(i18n): fix untranslated keys and placeholders to pass quality checks 2026-04-03 10:04:58 +09:00
chan f0bf58d336 fix(ci): update Node 24 and playwright workers, fix user detail queries on create 2026-04-03 09:46:26 +09:00
chan 462ae91a9e chore(i18n): fix duplicate sections in TOML files causing parsing errors in tests 2026-04-03 09:43:31 +09:00
chan 993882233b 18n 2026-04-02 18:10:25 +09:00
chan d08df8767d chore(i18n): filter out scanner false-positives and restore toml syntax 2026-04-02 18:09:28 +09:00
chan ec42739764 chore(devfront): fix biome formatting and lints 2026-04-02 17:43:45 +09:00
chan 81d70c87f1 chore(i18n): fix toml nesting syntax for missing translation keys 2026-04-02 17:32:05 +09:00
chan d9019ffdc9 i18 2026-04-02 17:25:11 +09:00
chan 2b49fd92b7 chore(i18n): auto-patch missing translation keys from scanner output 2026-04-02 17:16:24 +09:00
chan 797c6b0b8a chore: fix frontend lints and format issues
- Resolve 'noDelete' by using undefined assignment in TenantSchemaPage
- Resolve React list key warning by using client_id in UserDetailPage
- Run biome formatter across modified components
2026-04-02 16:46:54 +09:00
chan b582c82c6f feat: implement multi-identifier architecture (Issue #496)
- Database: Add user_login_ids table for 1:N identifier mapping and remove legacy login_id column
- Kratos: Update identity schema to use custom_login_ids array instead of a single id trait
- Backend: Implement syncCustomLoginIDs to collect isLoginId fields across tenant schemas
- Backend: Add backtracking logic to auto-assign session tenant based on used login identifier
- Backend: Add 409 Conflict exception handling for Create/Update operations
- AdminFront: Refactor UserDetailPage to a tabbed grid layout (Info, Tenants, Security)
- AdminFront: Show '로그인 ID' badge on tenant schema fields used for authentication
- UserFront: Remove legacy optional 'Login ID' input from signup flow
- Tests: Add multi-identifier repository tests and update handler tests
2026-04-02 16:07:33 +09:00
chan 1f9512a5a7 Merge pull request 'feat/id_login' (#497) from feat/id_login into dev
Reviewed-on: baron/baron-sso#497
2026-04-01 13:59:24 +09:00
chan 37bc1bba22 chore: add missing i18n keys and fix devfront formatting 2026-04-01 13:58:06 +09:00
chan 8a4dc1a320 i18 2026-04-01 13:55:57 +09:00
chan ded1e1f5c4 fix(backend): fix merge conflict artifact and undefined explicitLoginID in UserHandler 2026-04-01 13:45:56 +09:00
chan 634f869a84 Merge branch 'dev' into feat/id_login 2026-04-01 13:40:45 +09:00
chan 6c1da03e91 style(userfront): apply dart format 2026-04-01 13:36:34 +09:00
chan 5bf3ef3222 test(e2e): skip coordinate-based WASM tests on mobile 2026-04-01 13:34:23 +09:00
chan 5502e35dc5 chore(adminfront): fix any types and biome lint errors in adminApi.ts 2026-04-01 13:22:11 +09:00
chan fdffeacf50 fix(backend): fix loginIdField not being synced when companyCode is empty 2026-04-01 13:13:26 +09:00
chan 54a853a5c6 fix(backend): fix syncLoginID to allow fields named 'id' to be synced from custom schema 2026-04-01 13:03:39 +09:00
chan 27a7d226eb fix(backend): map Kratos traits id to loginId in UserSummary API response 2026-04-01 11:29:13 +09:00
chan a5fdeabd09 fix: resolve tenant user assignment bug (#490)
- Fix frontend payload mapping (tenantSlug -> companyCode) in adminApi.ts.
- Fix backend group member fetching to avoid dummy members in UserGroupService.List.
- Fix backend foreign key violation on group creation by distinguishing between tenant parent and group parent in UserGroupService.Create.
2026-04-01 11:19:09 +09:00
chan 6b30580f36 fix(backend): force keto outbox sync on explicit tenant assignment to self-heal missing relations 2026-03-31 17:51:53 +09:00
chan bc73b85909 feat(backend): auto-sync user group keto relation based on department in user update 2026-03-31 13:50:23 +09:00
chan 5029b8049b fix(backend): prevent duplicate key constraint on empty login id when syncing users 2026-03-31 13:11:32 +09:00
chan 2a162f0efe Merge pull request 'temp-branch' (#464) from temp-branch into dev
Reviewed-on: baron/baron-sso#464
2026-03-27 21:40:38 +09:00
chan dcc5708d17 린트 적용용 2026-03-27 21:37:40 +09:00
chan 809ece6a68 chore: ignore playwright artifacts in biome and fix minor devfront imports 2026-03-27 21:27:03 +09:00
chan 2e14c9d6fe test(backend): update expected error message for invalid company code to match korean translation 2026-03-27 21:18:51 +09:00
chan 543607069e fix(userfront): correctly display general signup errors in a dialog instead of password field 2026-03-27 20:59:00 +09:00
chan 13469b14fb fix: refine error messages for signup failure and company code 2026-03-27 20:39:49 +09:00
chan 603b9e0032 fix(backend): resolve signup issues by fixing tenant slug case-sensitivity and exposing Kratos errors 2026-03-27 20:03:50 +09:00
chan 987b4797bb style(userfront): add missing curly braces for flow control structures 2026-03-27 19:21:33 +09:00
chan 8f78dbf68c test(adminfront): add E2E tests for login ID validation and conflict handling 2026-03-27 19:06:51 +09:00
chan b3f33cfa30 Merge pull request 'temp-branch' (#461) from temp-branch into dev
Reviewed-on: baron/baron-sso#461
2026-03-27 19:02:42 +09:00
chan aa8dc05311 chore(i18n): fix sync errors by adding missing keys to ko and en locales 2026-03-27 18:48:19 +09:00
chan 17168bceae Merge branch 'dev' into temp-branch 2026-03-27 18:42:59 +09:00
chan a75ae1de9a format error 수정 2026-03-27 18:41:49 +09:00
chan f8d10c90b8 style(userfront): apply dart format 2026-03-27 18:10:32 +09:00
chan 6192220ec1 fix(adminfront): fix Biome lint errors by removing explicit any types 2026-03-27 18:02:53 +09:00
chan 5ae0e19e31 style: apply backend go fmt and frontend biome auto-fixes 2026-03-27 17:57:03 +09:00
chan 2383c6a6be Merge commit '6a50dc280f9c7e71fe09481ee76c4c9c6d5fe710' into temp-branch 2026-03-27 17:41:59 +09:00
chan ffba1563a7 chore: add missing i18n keys to satisfy i18n-scanner 2026-03-27 17:41:22 +09:00
chan 6a50dc280f chore: add missing i18n keys to satisfy i18n-scanner 2026-03-27 17:38:52 +09:00
chan 641e4aba0d fix(adminfront): fix auth redirection in tests and add custom field validation
- Skip auth redirect to `/login` when `_IS_TEST_MODE` is true to prevent test timeouts.
- Update `UserSchemaField` type and `TenantMetadataFields` to support regex validation patterns.
- Fix translation key for tenant profile metadata section title.
- Enhance OIDC mock data and mock endpoints in `users_schema.spec.ts`.
- Remove unreliable `waitForLoadState("networkidle")` to speed up test execution.
2026-03-27 17:30:30 +09:00
chan 75cc6737bd feat: add robust login ID collision prevention and UI validation (#440)
- Add `ValidateLoginID` to enforce ID collision and security rules (prevents phone number collision, email format usage, and reserved words).
- Add `POST /api/v1/auth/signup/check-login-id` endpoint for real-time ID availability checks.
- Add `checkLoginIDAvailability` API call to userfront's `AuthProxyService`.
- Implement "Check Duplication" button and error/success messaging for the Login ID field in the signup screen.
- Add "000000" magic code bypass for `VerifySignupCode` in non-production environments to streamline testing.
2026-03-27 11:19:28 +09:00
chan aa60a22d57 feat: restore explicit loginId field and add to userfront signup flow
- Revert the removal of loginId from adminfront and backend.
- Prevent phone normalization logic from mangling custom employee ID login fields.
- Add an explicit 'loginId' optional input field to the userfront signup UI.
- Update AuthProxyService.signup and backend AuthHandler.Signup to transmit and map the 'loginId' parameter properly.
2026-03-26 14:22:43 +09:00
chan 85b2049a61 fix(backend): improve LoginID synchronization from custom metadata fields
- Centralize LoginID sync logic in syncLoginID helper
- Support namespaced metadata in CreateUser, UpdateUser, and BulkCreateUsers
- Ensure UpdateUser and UpdateMe always sync LoginID from configured field even if not in update request
- Add phone number normalization consistency for custom LoginIDs
- Add unit tests for namespaced metadata LoginID sync
2026-03-26 12:46:33 +09:00
chan 6337d975ea fix: Admin UI에서 전송한 커스텀 필드(metadata)가 백엔드 Kratos 트레이츠에 빈 배열로 깨져서 저장되는 문제 해결 (#440) 2026-03-25 17:43:30 +09:00
chan dc4a5921c6 chore: 정상 동작이지만 노이즈를 유발하는 Kratos 세션 체크 실패(401) 로그 메시지 수정 2026-03-25 17:29:10 +09:00
chan 5d81027b34 fix: UpdateMe 핸들러 내 계층형 메타데이터 처리 및 로그인 ID 동기화 로직 보강 2026-03-25 17:14:40 +09:00
chan b3f0548c10 fix: 불필요한 역할 오버라이딩(Overriding real profile role) 로그 제거 2026-03-25 17:11:47 +09:00
chan ab9cbfc897 fix: 권한이나 소속이 변경되지 않았을 때 Keto 권한 릴레이션이 불필요하게 삭제 후 재생성되는 버그 수정 2026-03-25 17:01:55 +09:00
chan aad4ea84a1 fix: 내 정보(UpdateMe) 수정 시 커스텀 필드 로그인 ID 동기화 및 Metadata 필드 추가 (#440) 2026-03-25 16:28:19 +09:00
chan 6a4c37603d fix: Admin UI 커스텀 필드 로그인 ID 반영 문제 및 비밀번호 초기화 동작 개선 (#440)
- 사용자 정보 수정(UpdateUser) 시 메타데이터(커스텀 필드)를 명시적 loginId 값보다 우선하여 동기화하도록 로직 순서 변경
- Admin UI 사용자 상세의 비밀번호 초기화 기능이 즉시 폼에 덮어씌워지는 문제 해결을 위해, 별도의 확인 절차 후 즉각 독립적인 API 호출을 통해 재설정되도록 개선
2026-03-25 16:26:01 +09:00
chan d83646a7ef fix: 소유자 및 관리자 추가 시 중복 등록 방지 로직 추가 (#440) 2026-03-25 16:05:39 +09:00
chan c244917737 fix: adminfront utils.ts 내 generateSecurePassword 함수 추가 2026-03-25 15:46:11 +09:00
chan 7c21e500d6 fix: CreateUser 핸들러 내 누락된 LoginID 필드 추가 및 오타 수정 2026-03-25 15:34:29 +09:00
chan d10f80d41d feat: 커스텀 필드 기반 로그인 ID 연동 기능 추가 (#440)
- Kratos Identity 스키마에 로그인 전용 `id` 속성 추가
- 테넌트 Config의 `loginIdField` 설정에 따라 User의 `login_id` 및 Kratos `traits.id` 동기화 로직 구현
- Admin UI 테넌트 스키마 설정 내 '로그인 ID로 사용' 체크박스 추가
- Admin UI 사용자 생성/수정/조회 화면에 로그인 ID 관리 필드 및 컬럼 반영
- Userfront 로그인 화면 접속 시 테넌트 설정에 따라 동적 로그인 ID 라벨 적용
- 관련 다국어(ko/en) 번역 추가 및 로그인 ID 설계 문서 업데이트
2026-03-25 15:27:44 +09:00
chan 6fbf1a17b8 Merge pull request 'feature/af-ui' (#449) from feature/af-ui into dev
Reviewed-on: baron/baron-sso#449
2026-03-24 17:18:05 +09:00
chan d97feffebb Merge branch 'dev' into feature/af-ui 2026-03-24 17:15:03 +09:00
chan ab999c1e16 i18n 검증 완료 2026-03-24 17:12:24 +09:00
chan 79b7abd67b Merge branch 'dev' into feature/af-ui 2026-03-24 16:48:56 +09:00
chan 1d37bf5420 test code제외 2026-03-24 16:40:28 +09:00
chan ddef0f7f05 레거시 수정 2026-03-24 16:37:47 +09:00
chan a669d57e4a test code i18n x 2026-03-24 16:37:01 +09:00
chan 311e491683 누락된 키 추가: 테넌트 수정 화면에 새롭게 추가한 '상위 테넌트' 관련 UI 키 2종을 로컬 설정 파일에 반영했습니다 2026-03-24 16:33:01 +09:00
chan a4f283e4e6 #445 #430 #426 #427 2026-03-24 14:22:05 +09:00