1
0
forked from baron/baron-sso
Commit Graph

91 Commits

Author SHA1 Message Date
kyy
5648b7ec45 사용자 삭제 RP 관계 정리 로그 미표시 수정 2026-05-29 18:26:17 +09:00
kyy
041b0724be 삭제된 사용자 RP 관계 정리 2026-05-29 18:26:17 +09:00
3e31fdfa0c test: raise frontend coverage baselines 2026-05-29 14:31:10 +09:00
62b1938c42 refactor: 보조 이메일 키값을 sub_email로 통일 및 수동 폼 추가 (#917)
- `secondary_emails` 대신 `sub_email`을 키값으로 사용하도록 전면 수정
- 관리자 화면의 수동 사용자 생성(Create) 및 수정(Detail) 폼에 `sub_email` 입력 필드 추가
- CSV 템플릿의 컬럼명을 `sub_email`로 변경
- 백엔드의 Kratos Traits 조회 및 배열 추출 로직을 `sub_email` 기준으로 업데이트
- E2E 테스트(`users_bulk.spec.ts`, `users_bulk_secondary.spec.ts`)에서 `sub_email` 검증하도록 수정 및 통과 확인
2026-05-29 11:07:59 +09:00
6e610c553f feat: 사용자 벌크 CSV 등록 시 보조 이메일 지원 (#917)
- `adminfront` CSV 템플릿 헤더에 `secondary_emails` 추가 및 예시 반영
- `adminfront` CSV 파서(`csvParser.ts`)에서 `secondary_emails` 추출 로직 보강
- `backend` 에서 `BulkCreateUsers`, `UpdateUser` 실행 시 보조 이메일을 포함한 모든 이메일에 대해 식별자 유효성(ValidateLoginID) 검사 수행
- `domain.ValidateLoginID`의 파라미터를 복수 이메일 처리를 위해 `[]string`으로 변경
- Playwright E2E 테스트 `users_bulk_secondary.spec.ts` 신규 작성 및 테스트 패스 확인
2026-05-29 10:39:24 +09:00
fd82dd9bdd 조직 연동 오류 해결 2026-05-20 11:17:31 +09:00
42b49674cc 사용자 상태 세분화 2026-05-20 10:17:15 +09:00
df543d6203 정합성 위반사항 확인 및 조치기능 추가 2026-05-14 09:04:33 +09:00
f6f8e88342 refactoring 2026-05-14 08:11:02 +09:00
e36a973053 사용자 테넌트 소속 데이터 정리 2026-05-13 18:27:55 +09:00
8a6e41d74c 테넌트 목록 조회 cursor기반으로 재구성. 사용자 metadata 미사용 필드 제거 2026-05-13 18:10:37 +09:00
5e7b7b878c 테넌트 목록 조회 cursor기반으로 재구성. 사용자 metadata 미사용 필드 제거 2026-05-13 18:05:51 +09:00
8c2b2f71ef 조직도 M2M조회 추가, 자동로그인 보완 2026-05-13 13:44:30 +09:00
5e649c279f 동기화 기초구조 마련 2026-05-12 12:25:31 +09:00
3063450ee0 조직현황 구조변경. 총괄센터삼안 실 조직 삽입확인 2026-05-11 20:14:56 +09:00
843b4100ad adminfront 조직 통계오류 보정. Kratos Projection용 통계테이블 구조 추가 2026-05-11 13:01:55 +09:00
kyy
8307f65f6a ef286330a2 반영 code-check 오류 수정 2026-05-08 15:34:00 +09:00
074c3e30d1 멀티 테넌트 멤버 집계 해결 2026-05-07 18:05:24 +09:00
f6cf261fd5 fix: resolve tenant member removal and move aggregation bugs
- adminfront: Update removeMutation to correctly pass 'isRemoveTenant: true' and the specific tenant slug instead of empty string
- backend: Fix 'Move' operation (Normal Update) in UpdateUser to correctly remove the old primary company code from the 'companyCodes' array and sync the deletion to Keto, ensuring accurate member count aggregation
2026-05-07 15:43:08 +09:00
6d05bb212b fix: enqueue KetoOutboxActionDelete for isRemoveTenant
- Ensure Keto permissions are correctly revoked when a user is removed from a tenant.
2026-05-06 14:44:03 +09:00
5f9a61de98 feat: implement multi-tenant member management and UI improvements
- Add multi-tenant support (isAddTenant, isRemoveTenant) to backend UpdateUser API.
- Update UserRepository to support searching in company_codes array.
- Implement table sorting and align search bar layout in adminfront.
- Add 'Assign Existing Member' and 'Exclude from Organization' features to TenantUsersPage.
- Auto-populate tenantSlug in UserCreatePage via query parameters.
- Add necessary localization keys for new UI elements.

Resolves #644, #639, #642, #641
2026-05-06 14:20:35 +09:00
2495fcb13d worksmobile 연동 & ory stack 26.2.0으로 업그레이드 2026-05-06 09:30:00 +09:00
f7e4d43b16 Implement tenant import and RP auto login policies 2026-04-30 15:45:34 +09:00
01e7b15c46 org chart 연동기능 추가 2026-04-29 21:00:51 +09:00
kyy
081cd6739a backend code-check 오류 수정 2026-04-24 14:59:40 +09:00
f810427b21 chore(auth): restrict OIDC generated claims debug logs to dev environment
- Prevent overly verbose logging of ID token payloads in production by checking APP_ENV
2026-04-24 12:00:00 +09:00
kyy
141c8e0ab5 dev 브런치 반영 code-check 오류 수정 2026-04-20 16:34:04 +09:00
726ac71214 fix(user): preserve multi-tenant companyCodes and fix Kratos code parsing
- UpdateUser: Implement 'Preserve & Merge' logic to fetch existing joined
  tenants from Keto and merge them with UI requests, preventing the
  loss of multi-tenant affiliations.
- Keto Sync: Expand the self-healing background job to iterate over all
  companyCodes, ensuring 'members' relations are created for every
  joined tenant (fixes #554).
- AuthHandler: Update extractFirstString to gracefully handle numeric
  JSON types, fixing an issue where Kratos login codes were lost during
  Courier webhook processing.
2026-04-15 16:01:31 +09:00
ea44785ef0 feat: expand manageableSlugs to include entire tenant tree for users
Allows users and tenant admins to view users across all tenants within their hierarchy (both parent and child organizations) instead of just their direct tenant.
2026-04-13 10:51:29 +09:00
d3a82d1653 feat: allow regular users to view their own tenant's org chart
Changes the /users endpoint to allow RoleUser access and securely restricts the returned data to only users within their affiliated tenants. Removes the unnecessary back button from the Org Chart view since it's now a top-level nav item.
2026-04-13 10:47:56 +09:00
5211842d47 조직도 기능 추가 2026-04-10 11:38:47 +09:00
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
kyy
d9e8fee64b dev 브런치 병합 code-check 오류 수정 2026-04-01 15:06:46 +09:00
ded1e1f5c4 fix(backend): fix merge conflict artifact and undefined explicitLoginID in UserHandler 2026-04-01 13:45:56 +09:00
634f869a84 Merge branch 'dev' into feat/id_login 2026-04-01 13:40:45 +09:00
fdffeacf50 fix(backend): fix loginIdField not being synced when companyCode is empty 2026-04-01 13:13:26 +09:00
54a853a5c6 fix(backend): fix syncLoginID to allow fields named 'id' to be synced from custom schema 2026-04-01 13:03:39 +09:00
27a7d226eb fix(backend): map Kratos traits id to loginId in UserSummary API response 2026-04-01 11:29:13 +09:00
6b30580f36 fix(backend): force keto outbox sync on explicit tenant assignment to self-heal missing relations 2026-03-31 17:51:53 +09:00
bc73b85909 feat(backend): auto-sync user group keto relation based on department in user update 2026-03-31 13:50:23 +09:00
5029b8049b fix(backend): prevent duplicate key constraint on empty login id when syncing users 2026-03-31 13:11:32 +09:00
kyy
2364ff59d2 관리자 비밀번호 변경을 Kratos 해시 업데이트 방식으로 수정 2026-03-31 11:49:47 +09:00
5ae0e19e31 style: apply backend go fmt and frontend biome auto-fixes 2026-03-27 17:57:03 +09:00
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
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
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
6337d975ea fix: Admin UI에서 전송한 커스텀 필드(metadata)가 백엔드 Kratos 트레이츠에 빈 배열로 깨져서 저장되는 문제 해결 (#440) 2026-03-25 17:43:30 +09:00
ab9cbfc897 fix: 권한이나 소속이 변경되지 않았을 때 Keto 권한 릴레이션이 불필요하게 삭제 후 재생성되는 버그 수정 2026-03-25 17:01:55 +09:00
6a4c37603d fix: Admin UI 커스텀 필드 로그인 ID 반영 문제 및 비밀번호 초기화 동작 개선 (#440)
- 사용자 정보 수정(UpdateUser) 시 메타데이터(커스텀 필드)를 명시적 loginId 값보다 우선하여 동기화하도록 로직 순서 변경
- Admin UI 사용자 상세의 비밀번호 초기화 기능이 즉시 폼에 덮어씌워지는 문제 해결을 위해, 별도의 확인 절차 후 즉각 독립적인 API 호출을 통해 재설정되도록 개선
2026-03-25 16:26:01 +09:00
7c21e500d6 fix: CreateUser 핸들러 내 누락된 LoginID 필드 추가 및 오타 수정 2026-03-25 15:34:29 +09:00