From 797c6b0b8a678ecc43dc5b4fd5398e6cd70acc05 Mon Sep 17 00:00:00 2001 From: chan Date: Thu, 2 Apr 2026 16:46:54 +0900 Subject: [PATCH] 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 --- .../tenants/routes/TenantSchemaPage.tsx | 2 +- .../src/features/users/UserCreatePage.tsx | 5 +- .../src/features/users/UserDetailPage.tsx | 552 ++++++++++++++---- .../internal/service/tenant_service_test.go | 19 +- .../service/user_group_service_test.go | 21 + locales/en.toml | 63 +- locales/ko.toml | 60 ++ locales/template.toml | 60 ++ userfront/assets/translations/en.toml | 60 +- userfront/assets/translations/ko.toml | 59 ++ userfront/assets/translations/template.toml | 59 ++ 11 files changed, 841 insertions(+), 119 deletions(-) diff --git a/adminfront/src/features/tenants/routes/TenantSchemaPage.tsx b/adminfront/src/features/tenants/routes/TenantSchemaPage.tsx index 07e53e9a..7b4fefa3 100644 --- a/adminfront/src/features/tenants/routes/TenantSchemaPage.tsx +++ b/adminfront/src/features/tenants/routes/TenantSchemaPage.tsx @@ -127,7 +127,7 @@ export function TenantSchemaPage() { mutationFn: (newFields: SchemaField[]) => { // Remove legacy loginIdField, keep isLoginId natively in userSchema const newConfig = { ...tenantQuery.data?.config }; - delete newConfig.loginIdField; + newConfig.loginIdField = undefined; newConfig.userSchema = newFields; return updateTenant(tenantId, { diff --git a/adminfront/src/features/users/UserCreatePage.tsx b/adminfront/src/features/users/UserCreatePage.tsx index d22be5d7..aafa0f92 100644 --- a/adminfront/src/features/users/UserCreatePage.tsx +++ b/adminfront/src/features/users/UserCreatePage.tsx @@ -452,7 +452,10 @@ function UserCreatePage() { )} {field.isLoginId && ( - {t("ui.admin.users.create.form.is_login_id", "로그인 ID")} + {t( + "ui.admin.users.create.form.is_login_id", + "로그인 ID", + )} )} diff --git a/adminfront/src/features/users/UserDetailPage.tsx b/adminfront/src/features/users/UserDetailPage.tsx index 678c5ac8..f6caf2d9 100644 --- a/adminfront/src/features/users/UserDetailPage.tsx +++ b/adminfront/src/features/users/UserDetailPage.tsx @@ -45,12 +45,12 @@ import { toast } from "../../components/ui/use-toast"; import { type UserUpdateRequest, deleteUser, - fetchPasswordPolicy, fetchMe, + fetchPasswordPolicy, fetchTenants, fetchUser, - updateUser, fetchUserRpHistory, + updateUser, } from "../../lib/adminApi"; import type { PasswordPolicyResponse } from "../../lib/adminApi"; import { t } from "../../lib/i18n"; @@ -163,7 +163,9 @@ function TenantMetadataFields({ {tenant.name} - {tenant.slug} + + {tenant.slug} +
{schema.map((field) => ( @@ -173,9 +175,7 @@ function TenantMetadataFields({ className="text-xs font-semibold text-muted-foreground flex items-center gap-1" > {field.label} - {field.required && ( - * - )} + {field.required && *} {field.adminOnly && ( Admin Only @@ -198,9 +198,7 @@ function TenantMetadataFields({ ? "checkbox" : "text" } - className={ - field.type === "boolean" ? "w-5 h-5" : "h-10 text-sm" - } + className={field.type === "boolean" ? "w-5 h-5" : "h-10 text-sm"} {...register(`metadata.${tenant.id}.${field.key}` as const, { required: field.required ? t( @@ -293,12 +291,10 @@ function UserDetailPage() { enabled: !!userId, }); - const { data: passwordPolicy } = useQuery( - { - queryKey: ["password-policy"], - queryFn: fetchPasswordPolicy, - }, - ); + const { data: passwordPolicy } = useQuery({ + queryKey: ["password-policy"], + queryFn: fetchPasswordPolicy, + }); const { register, @@ -373,7 +369,12 @@ function UserDetailPage() { return; } if (manualPassword !== manualPasswordConfirm) { - setPasswordResetError(t("msg.userfront.reset.error.mismatch", "비밀번호가 일치하지 않습니다.")); + setPasswordResetError( + t( + "msg.userfront.reset.error.mismatch", + "비밀번호가 일치하지 않습니다.", + ), + ); return; } } else { @@ -411,7 +412,10 @@ function UserDetailPage() { toast.success(t("msg.info.saved_success", "저장되었습니다.")); }, onError: (err: AxiosError<{ error?: string }>) => { - toast.error(err.response?.data?.error || t("err.common.unknown", "오류가 발생했습니다.")); + toast.error( + err.response?.data?.error || + t("err.common.unknown", "오류가 발생했습니다."), + ); }, }); @@ -419,7 +423,9 @@ function UserDetailPage() { mutationFn: () => deleteUser(userId), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ["users"] }); - toast.success(t("msg.admin.users.detail.delete_success", "사용자가 삭제되었습니다.")); + toast.success( + t("msg.admin.users.detail.delete_success", "사용자가 삭제되었습니다."), + ); navigate("/users"); }, }); @@ -444,7 +450,11 @@ function UserDetailPage() { }; const handleDelete = () => { - if (window.confirm(t("msg.admin.users.detail.delete_confirm", "삭제하시겠습니까?"))) { + if ( + window.confirm( + t("msg.admin.users.detail.delete_confirm", "삭제하시겠습니까?"), + ) + ) { deleteMutation.mutate(); } }; @@ -460,19 +470,33 @@ function UserDetailPage() { if (isError || !user) { return (
-

{t("msg.admin.users.detail.not_found", "사용자를 찾을 수 없습니다.")}

- +

+ {t("msg.admin.users.detail.not_found", "사용자를 찾을 수 없습니다.")} +

+
); } - const userAffiliatedTenants = user.joinedTenants || (user.tenant ? [user.tenant] : []); + const userAffiliatedTenants = + user.joinedTenants || (user.tenant ? [user.tenant] : []); return (
{/* Header with back button and actions */}
- @@ -492,12 +516,22 @@ function UserDetailPage() {
-

{user.name}

- +

+ {user.name} +

+ - {user.tenant?.name || user.companyCode || t("ui.admin.users.detail.form.tenant_global", "시스템 전역")} + {user.tenant?.name || + user.companyCode || + t("ui.admin.users.detail.form.tenant_global", "시스템 전역")} - + {t(`ui.common.status.${user.status}`, user.status)}
@@ -516,49 +550,94 @@ function UserDetailPage() {
-

{t("ui.admin.users.detail.created_at", "가입일")}: {user.createdAt}

-

{t("ui.admin.users.detail.updated_at", "최근 수정")}: {user.updatedAt}

+

+ {t("ui.admin.users.detail.created_at", "가입일")}: {user.createdAt} +

+

+ {t("ui.admin.users.detail.updated_at", "최근 수정")}:{" "} + {user.updatedAt} +

- + - + {t("ui.admin.users.detail.tabs.info", "기본 정보")} - + {t("ui.admin.users.detail.tabs.tenants", "테넌트 프로필")} - + {t("ui.admin.users.detail.tabs.security", "보안 & 활동")}
- + {t("ui.admin.users.detail.edit_title", "프로필 정보")} - {t("msg.admin.users.detail.edit_subtitle", "{{email}} 계정의 정보를 수정합니다.", { email: user.email })} + + {t( + "msg.admin.users.detail.edit_subtitle", + "{{email}} 계정의 정보를 수정합니다.", + { email: user.email }, + )} +
- - + +
- + @@ -567,38 +646,86 @@ function UserDetailPage() {
- - + +
- +
- +
- +
+ +
- - + +
- - + +
-
- + - {t("ui.admin.users.detail.custom_fields.multi_title", "테넌트별 상세 프로필")} + {t( + "ui.admin.users.detail.custom_fields.multi_title", + "테넌트별 상세 프로필", + )} - {t("msg.admin.users.detail.tenants_desc", "각 테넌트별로 정의된 커스텀 스키마 정보를 관리합니다.")} + {t( + "msg.admin.users.detail.tenants_desc", + "각 테넌트별로 정의된 커스텀 스키마 정보를 관리합니다.", + )} {userAffiliatedTenants.length === 0 ? (
-

{t("msg.admin.users.detail.no_tenants", "소속된 테넌트 정보가 없습니다.")}

+

+ {t( + "msg.admin.users.detail.no_tenants", + "소속된 테넌트 정보가 없습니다.", + )} +

) : (
{userAffiliatedTenants.map((t) => { - const tDetail = tenants.find((tenant) => tenant.id === t.id); - const schema = (tDetail?.config?.userSchema || []) as UserSchemaField[]; + const tDetail = tenants.find( + (tenant) => tenant.id === t.id, + ); + const schema = (tDetail?.config?.userSchema || + []) as UserSchemaField[]; return (
-
- +
@@ -708,19 +912,35 @@ function UserDetailPage() { {t("ui.admin.users.detail.password_title", "비밀번호 관리")} - {t("msg.admin.users.detail.security_desc", "비밀번호 초기화 및 보안 설정을 관리합니다.")} + + {t( + "msg.admin.users.detail.security_desc", + "비밀번호 초기화 및 보안 설정을 관리합니다.", + )} +

- {t("ui.admin.users.detail.reset_password_label", "비밀번호 초기화")} + {t( + "ui.admin.users.detail.reset_password_label", + "비밀번호 초기화", + )}

- {t("msg.admin.users.detail.reset_password_help", "안전한 새 비밀번호로 교체합니다.")} + {t( + "msg.admin.users.detail.reset_password_help", + "안전한 새 비밀번호로 교체합니다.", + )}

- @@ -729,45 +949,77 @@ function UserDetailPage() { {isSelf && (
-

{t("msg.admin.users.detail.self_password_reset_blocked", "보안을 위해 본인 계정은 사용자 포털에서만 변경 가능합니다.")}

+

+ {t( + "msg.admin.users.detail.self_password_reset_blocked", + "보안을 위해 본인 계정은 사용자 포털에서만 변경 가능합니다.", + )} +

)} {isPasswordResetOpen && !generatedPassword && !isSelf && (
- setPasswordResetMode(v as PasswordResetMode)}> + + setPasswordResetMode(v as PasswordResetMode) + } + > - {t("ui.admin.users.detail.reset_auto", "자동 생성")} - {t("ui.admin.users.detail.reset_manual", "직접 입력")} - +
- {t("msg.admin.users.detail.reset_auto_desc", "해킹이 어려운 복잡한 임시 비밀번호를 시스템이 즉시 생성합니다.")} + {t( + "msg.admin.users.detail.reset_auto_desc", + "해킹이 어려운 복잡한 임시 비밀번호를 시스템이 즉시 생성합니다.", + )}
-
- +
setManualPassword(e.target.value)} + onChange={(e) => + setManualPassword(e.target.value) + } className="h-11 rounded-xl shadow-sm pr-12" />
- + setManualPasswordConfirm(e.target.value)} + onChange={(e) => + setManualPasswordConfirm(e.target.value) + } className="h-11 rounded-xl shadow-sm" />
@@ -795,15 +1062,34 @@ function UserDetailPage() { {passwordResetError && (
- {passwordResetError} + + {passwordResetError} +
)}
- - +
@@ -814,19 +1100,37 @@ function UserDetailPage() {
- {t("ui.admin.users.detail.password_done", "성공적으로 초기화됨")} + {t( + "ui.admin.users.detail.password_done", + "성공적으로 초기화됨", + )}
- {generatedPassword} -
- +
)} @@ -838,26 +1142,50 @@ function UserDetailPage() { {t("ui.admin.users.detail.history_title", "서비스 이용 내역")} - {t("msg.admin.users.detail.history_desc", "최근 로그인한 연동 서비스(RP) 목록입니다.")} + + {t( + "msg.admin.users.detail.history_desc", + "최근 로그인한 연동 서비스(RP) 목록입니다.", + )} + {rpHistoryQuery.isLoading ? ( -
{t("msg.common.loading", "불러오는 중...")}
+
+ {t("msg.common.loading", "불러오는 중...")} +
) : !rpHistoryQuery.data || rpHistoryQuery.data.length === 0 ? (
-

{t("msg.admin.users.detail.no_history", "아직 이용한 서비스가 없습니다.")}

+

+ {t( + "msg.admin.users.detail.no_history", + "아직 이용한 서비스가 없습니다.", + )} +

) : (
- {rpHistoryQuery.data.map((item, i) => ( -
+ {rpHistoryQuery.data.map((item) => ( +
- {item.clientName || item.clientId} - {item.clientId} + + {item.clientName || item.clientId} + + + {item.clientId} +
- {item.lastLoginAt} + + {item.lastLoginAt} +
))} diff --git a/backend/internal/service/tenant_service_test.go b/backend/internal/service/tenant_service_test.go index 62344fee..df7a7237 100644 --- a/backend/internal/service/tenant_service_test.go +++ b/backend/internal/service/tenant_service_test.go @@ -137,7 +137,6 @@ func (m *MockUserRepoForTenant) CountByTenantIDs(ctx context.Context, tenantIDs } return args.Get(0).(map[string]int64), args.Error(1) } - func (m *MockUserRepoForTenant) CountByCompanyCodes(ctx context.Context, codes []string) (map[string]int64, error) { args := m.Called(ctx, codes) if args.Get(0) == nil { @@ -146,6 +145,24 @@ func (m *MockUserRepoForTenant) CountByCompanyCodes(ctx context.Context, codes [ return args.Get(0).(map[string]int64), args.Error(1) } +func (m *MockUserRepoForTenant) UpdateUserLoginIDs(ctx context.Context, userID string, loginIDs []domain.UserLoginID) error { + return nil +} + +func (m *MockUserRepoForTenant) GetUserLoginIDs(ctx context.Context, userID string) ([]domain.UserLoginID, error) { + return nil, nil +} + +func (m *MockUserRepoForTenant) IsLoginIDTaken(ctx context.Context, loginID string) (bool, error) { + return false, nil +} + +func (m *MockUserRepoForTenant) FindTenantIDByLoginID(ctx context.Context, loginID string) (string, error) { + return "", nil +} + +// --- Tests --- + func TestTenantService_RegisterTenant_AutoVerify(t *testing.T) { mockRepo := new(MockTenantRepoForSvc) mockOutbox := new(MockKetoOutboxRepositoryShared) diff --git a/backend/internal/service/user_group_service_test.go b/backend/internal/service/user_group_service_test.go index 25c8f792..53d18756 100644 --- a/backend/internal/service/user_group_service_test.go +++ b/backend/internal/service/user_group_service_test.go @@ -102,6 +102,27 @@ func (m *MockUserRepository) CountByCompanyCodes(ctx context.Context, codes []st return args.Get(0).(map[string]int64), args.Error(1) } +func (m *MockUserRepository) UpdateUserLoginIDs(ctx context.Context, userID string, loginIDs []domain.UserLoginID) error { + return nil +} + +func (m *MockUserRepository) GetUserLoginIDs(ctx context.Context, userID string) ([]domain.UserLoginID, error) { + return nil, nil +} + +func (m *MockUserRepository) IsLoginIDTaken(ctx context.Context, loginID string) (bool, error) { + return false, nil +} + +func (m *MockUserRepository) FindTenantIDByLoginID(ctx context.Context, loginID string) (string, error) { + return "", nil +} + +type MockKetoOutboxRepository struct { + + mock.Mock +} + type MockTenantRepository struct { mock.Mock } diff --git a/locales/en.toml b/locales/en.toml index 752d2139..6024e106 100644 --- a/locales/en.toml +++ b/locales/en.toml @@ -469,7 +469,6 @@ notice_detail = "Register and manage client applications." [msg.info] saved_success = "Saved successfully." - [msg.userfront] greeting = "Hello, {{name}}." @@ -770,7 +769,6 @@ title = "Tell us about your affiliation." body = "Your account has been created successfully." title = "Sign-up complete" - [ui] [ui.admin] @@ -1609,7 +1607,6 @@ remaining = "Expires in: {{minutes}}m {{seconds}}s" refresh = "Refresh session expiry" refreshing = "Refreshing session expiry..." - [ui.userfront] app_title = "Baron SW Portal" @@ -1916,3 +1913,63 @@ role_tenant_admin = "" role_user = "" status_active = "" status_inactive = "" + +msg.admin.users.detail.history_desc = "" +msg.admin.users.detail.no_history = "" +msg.admin.users.detail.no_tenants = "" +msg.admin.users.detail.reset_auto_desc = "" +msg.admin.users.detail.security_desc = "" +msg.admin.users.detail.tenant_slug_help = "" +msg.admin.users.detail.tenants_desc = "" +msg.common.copied = "" +msg.dev.clients.general.public_key.allowed_algorithms_tooltip = "" +msg.dev.clients.general.public_key.cache.missing_algorithm_badge = "" +msg.dev.clients.general.public_key.cache.missing_algorithm_reason = "" +msg.dev.clients.general.public_key.cache.missing_algorithms_help = "" +msg.dev.clients.general.public_key.cache.missing_algorithms_title = "" +msg.dev.clients.general.public_key.cache.parsed_keys_empty = "" +msg.dev.clients.general.public_key.cache.parsed_keys_help = "" +msg.dev.clients.general.public_key.cache.unsupported_algorithm_reason = "" +msg.dev.clients.general.public_key.cache.unsupported_algorithms_help = "" +msg.dev.clients.general.public_key.cache.unsupported_algorithms_title = "" +msg.dev.clients.general.public_key.cache_empty = "" +msg.dev.clients.general.public_key.cache_help = "" +msg.dev.clients.general.public_key.cache_refresh_failed = "" +msg.dev.clients.general.public_key.cache_refreshed = "" +msg.dev.clients.general.public_key.cache_revoke_confirm = "" +msg.dev.clients.general.public_key.cache_revoke_failed = "" +msg.dev.clients.general.public_key.cache_revoked = "" +msg.dev.clients.general.public_key.validation.missing_parsed_algorithms = "" +msg.dev.clients.general.public_key.validation.unsupported_parsed_algorithms = "" +ui.admin.users.create.form.is_login_id = "" +ui.admin.users.detail.form.email = "" +ui.admin.users.detail.form.is_login_id = "" +ui.admin.users.detail.form.role_rp_admin = "" +ui.admin.users.detail.form.tenant_slug = "" +ui.admin.users.detail.generate_button = "" +ui.admin.users.detail.history_title = "" +ui.admin.users.detail.manual_confirm = "" +ui.admin.users.detail.manual_password = "" +ui.admin.users.detail.password_done = "" +ui.admin.users.detail.reset_auto = "" +ui.admin.users.detail.reset_execute = "" +ui.admin.users.detail.reset_manual = "" +ui.admin.users.detail.save_tenants = "" +ui.admin.users.detail.tabs.info = "" +ui.admin.users.detail.tabs.security = "" +ui.admin.users.detail.tabs.tenants = "" +ui.admin.users.detail.updated_at = "" +ui.dev.clients.general.public_key.allowed_algorithms_info = "" +ui.dev.clients.general.public_key.cache.cached_at = "" +ui.dev.clients.general.public_key.cache.error = "" +ui.dev.clients.general.public_key.cache.expires_at = "" +ui.dev.clients.general.public_key.cache.failures = "" +ui.dev.clients.general.public_key.cache.kids = "" +ui.dev.clients.general.public_key.cache.last_checked_at = "" +ui.dev.clients.general.public_key.cache.last_success = "" +ui.dev.clients.general.public_key.cache.parsed_key_n = "" +ui.dev.clients.general.public_key.cache.parsed_keys = "" +ui.dev.clients.general.public_key.cache.status = "" +ui.dev.clients.general.public_key.cache.title = "" +ui.dev.clients.general.public_key.cache.uri = "" +ui.dev.clients.general.public_key.revoke_cache = "" \ No newline at end of file diff --git a/locales/ko.toml b/locales/ko.toml index a7a090a1..34623b33 100644 --- a/locales/ko.toml +++ b/locales/ko.toml @@ -1848,3 +1848,63 @@ role_tenant_admin = "" role_user = "" status_active = "" status_inactive = "" + +msg.admin.users.detail.history_desc = "" +msg.admin.users.detail.no_history = "" +msg.admin.users.detail.no_tenants = "" +msg.admin.users.detail.reset_auto_desc = "" +msg.admin.users.detail.security_desc = "" +msg.admin.users.detail.tenant_slug_help = "" +msg.admin.users.detail.tenants_desc = "" +msg.common.copied = "" +msg.dev.clients.general.public_key.allowed_algorithms_tooltip = "" +msg.dev.clients.general.public_key.cache.missing_algorithm_badge = "" +msg.dev.clients.general.public_key.cache.missing_algorithm_reason = "" +msg.dev.clients.general.public_key.cache.missing_algorithms_help = "" +msg.dev.clients.general.public_key.cache.missing_algorithms_title = "" +msg.dev.clients.general.public_key.cache.parsed_keys_empty = "" +msg.dev.clients.general.public_key.cache.parsed_keys_help = "" +msg.dev.clients.general.public_key.cache.unsupported_algorithm_reason = "" +msg.dev.clients.general.public_key.cache.unsupported_algorithms_help = "" +msg.dev.clients.general.public_key.cache.unsupported_algorithms_title = "" +msg.dev.clients.general.public_key.cache_empty = "" +msg.dev.clients.general.public_key.cache_help = "" +msg.dev.clients.general.public_key.cache_refresh_failed = "" +msg.dev.clients.general.public_key.cache_refreshed = "" +msg.dev.clients.general.public_key.cache_revoke_confirm = "" +msg.dev.clients.general.public_key.cache_revoke_failed = "" +msg.dev.clients.general.public_key.cache_revoked = "" +msg.dev.clients.general.public_key.validation.missing_parsed_algorithms = "" +msg.dev.clients.general.public_key.validation.unsupported_parsed_algorithms = "" +ui.admin.users.create.form.is_login_id = "" +ui.admin.users.detail.form.email = "" +ui.admin.users.detail.form.is_login_id = "" +ui.admin.users.detail.form.role_rp_admin = "" +ui.admin.users.detail.form.tenant_slug = "" +ui.admin.users.detail.generate_button = "" +ui.admin.users.detail.history_title = "" +ui.admin.users.detail.manual_confirm = "" +ui.admin.users.detail.manual_password = "" +ui.admin.users.detail.password_done = "" +ui.admin.users.detail.reset_auto = "" +ui.admin.users.detail.reset_execute = "" +ui.admin.users.detail.reset_manual = "" +ui.admin.users.detail.save_tenants = "" +ui.admin.users.detail.tabs.info = "" +ui.admin.users.detail.tabs.security = "" +ui.admin.users.detail.tabs.tenants = "" +ui.admin.users.detail.updated_at = "" +ui.dev.clients.general.public_key.allowed_algorithms_info = "" +ui.dev.clients.general.public_key.cache.cached_at = "" +ui.dev.clients.general.public_key.cache.error = "" +ui.dev.clients.general.public_key.cache.expires_at = "" +ui.dev.clients.general.public_key.cache.failures = "" +ui.dev.clients.general.public_key.cache.kids = "" +ui.dev.clients.general.public_key.cache.last_checked_at = "" +ui.dev.clients.general.public_key.cache.last_success = "" +ui.dev.clients.general.public_key.cache.parsed_key_n = "" +ui.dev.clients.general.public_key.cache.parsed_keys = "" +ui.dev.clients.general.public_key.cache.status = "" +ui.dev.clients.general.public_key.cache.title = "" +ui.dev.clients.general.public_key.cache.uri = "" +ui.dev.clients.general.public_key.revoke_cache = "" \ No newline at end of file diff --git a/locales/template.toml b/locales/template.toml index 9e64a7ac..4243f5c2 100644 --- a/locales/template.toml +++ b/locales/template.toml @@ -1836,3 +1836,63 @@ status_inactive = "" [ui.admin.users.list.table] login_id = "" + +msg.admin.users.detail.history_desc = "" +msg.admin.users.detail.no_history = "" +msg.admin.users.detail.no_tenants = "" +msg.admin.users.detail.reset_auto_desc = "" +msg.admin.users.detail.security_desc = "" +msg.admin.users.detail.tenant_slug_help = "" +msg.admin.users.detail.tenants_desc = "" +msg.common.copied = "" +msg.dev.clients.general.public_key.allowed_algorithms_tooltip = "" +msg.dev.clients.general.public_key.cache.missing_algorithm_badge = "" +msg.dev.clients.general.public_key.cache.missing_algorithm_reason = "" +msg.dev.clients.general.public_key.cache.missing_algorithms_help = "" +msg.dev.clients.general.public_key.cache.missing_algorithms_title = "" +msg.dev.clients.general.public_key.cache.parsed_keys_empty = "" +msg.dev.clients.general.public_key.cache.parsed_keys_help = "" +msg.dev.clients.general.public_key.cache.unsupported_algorithm_reason = "" +msg.dev.clients.general.public_key.cache.unsupported_algorithms_help = "" +msg.dev.clients.general.public_key.cache.unsupported_algorithms_title = "" +msg.dev.clients.general.public_key.cache_empty = "" +msg.dev.clients.general.public_key.cache_help = "" +msg.dev.clients.general.public_key.cache_refresh_failed = "" +msg.dev.clients.general.public_key.cache_refreshed = "" +msg.dev.clients.general.public_key.cache_revoke_confirm = "" +msg.dev.clients.general.public_key.cache_revoke_failed = "" +msg.dev.clients.general.public_key.cache_revoked = "" +msg.dev.clients.general.public_key.validation.missing_parsed_algorithms = "" +msg.dev.clients.general.public_key.validation.unsupported_parsed_algorithms = "" +ui.admin.users.create.form.is_login_id = "" +ui.admin.users.detail.form.email = "" +ui.admin.users.detail.form.is_login_id = "" +ui.admin.users.detail.form.role_rp_admin = "" +ui.admin.users.detail.form.tenant_slug = "" +ui.admin.users.detail.generate_button = "" +ui.admin.users.detail.history_title = "" +ui.admin.users.detail.manual_confirm = "" +ui.admin.users.detail.manual_password = "" +ui.admin.users.detail.password_done = "" +ui.admin.users.detail.reset_auto = "" +ui.admin.users.detail.reset_execute = "" +ui.admin.users.detail.reset_manual = "" +ui.admin.users.detail.save_tenants = "" +ui.admin.users.detail.tabs.info = "" +ui.admin.users.detail.tabs.security = "" +ui.admin.users.detail.tabs.tenants = "" +ui.admin.users.detail.updated_at = "" +ui.dev.clients.general.public_key.allowed_algorithms_info = "" +ui.dev.clients.general.public_key.cache.cached_at = "" +ui.dev.clients.general.public_key.cache.error = "" +ui.dev.clients.general.public_key.cache.expires_at = "" +ui.dev.clients.general.public_key.cache.failures = "" +ui.dev.clients.general.public_key.cache.kids = "" +ui.dev.clients.general.public_key.cache.last_checked_at = "" +ui.dev.clients.general.public_key.cache.last_success = "" +ui.dev.clients.general.public_key.cache.parsed_key_n = "" +ui.dev.clients.general.public_key.cache.parsed_keys = "" +ui.dev.clients.general.public_key.cache.status = "" +ui.dev.clients.general.public_key.cache.title = "" +ui.dev.clients.general.public_key.cache.uri = "" +ui.dev.clients.general.public_key.revoke_cache = "" \ No newline at end of file diff --git a/userfront/assets/translations/en.toml b/userfront/assets/translations/en.toml index ec998ad7..f728fd8d 100644 --- a/userfront/assets/translations/en.toml +++ b/userfront/assets/translations/en.toml @@ -340,7 +340,6 @@ title = "Tell us about your affiliation." body = "Your account has been created successfully." title = "Sign-up complete" - [ui.common] add = "Add" all = "All" @@ -633,3 +632,62 @@ verify = "Verification" [ui.userfront.signup.success] action = "Go to sign-in" +msg.admin.users.detail.history_desc = "" +msg.admin.users.detail.no_history = "" +msg.admin.users.detail.no_tenants = "" +msg.admin.users.detail.reset_auto_desc = "" +msg.admin.users.detail.security_desc = "" +msg.admin.users.detail.tenant_slug_help = "" +msg.admin.users.detail.tenants_desc = "" +msg.common.copied = "" +msg.dev.clients.general.public_key.allowed_algorithms_tooltip = "" +msg.dev.clients.general.public_key.cache.missing_algorithm_badge = "" +msg.dev.clients.general.public_key.cache.missing_algorithm_reason = "" +msg.dev.clients.general.public_key.cache.missing_algorithms_help = "" +msg.dev.clients.general.public_key.cache.missing_algorithms_title = "" +msg.dev.clients.general.public_key.cache.parsed_keys_empty = "" +msg.dev.clients.general.public_key.cache.parsed_keys_help = "" +msg.dev.clients.general.public_key.cache.unsupported_algorithm_reason = "" +msg.dev.clients.general.public_key.cache.unsupported_algorithms_help = "" +msg.dev.clients.general.public_key.cache.unsupported_algorithms_title = "" +msg.dev.clients.general.public_key.cache_empty = "" +msg.dev.clients.general.public_key.cache_help = "" +msg.dev.clients.general.public_key.cache_refresh_failed = "" +msg.dev.clients.general.public_key.cache_refreshed = "" +msg.dev.clients.general.public_key.cache_revoke_confirm = "" +msg.dev.clients.general.public_key.cache_revoke_failed = "" +msg.dev.clients.general.public_key.cache_revoked = "" +msg.dev.clients.general.public_key.validation.missing_parsed_algorithms = "" +msg.dev.clients.general.public_key.validation.unsupported_parsed_algorithms = "" +ui.admin.users.create.form.is_login_id = "" +ui.admin.users.detail.form.email = "" +ui.admin.users.detail.form.is_login_id = "" +ui.admin.users.detail.form.role_rp_admin = "" +ui.admin.users.detail.form.tenant_slug = "" +ui.admin.users.detail.generate_button = "" +ui.admin.users.detail.history_title = "" +ui.admin.users.detail.manual_confirm = "" +ui.admin.users.detail.manual_password = "" +ui.admin.users.detail.password_done = "" +ui.admin.users.detail.reset_auto = "" +ui.admin.users.detail.reset_execute = "" +ui.admin.users.detail.reset_manual = "" +ui.admin.users.detail.save_tenants = "" +ui.admin.users.detail.tabs.info = "" +ui.admin.users.detail.tabs.security = "" +ui.admin.users.detail.tabs.tenants = "" +ui.admin.users.detail.updated_at = "" +ui.dev.clients.general.public_key.allowed_algorithms_info = "" +ui.dev.clients.general.public_key.cache.cached_at = "" +ui.dev.clients.general.public_key.cache.error = "" +ui.dev.clients.general.public_key.cache.expires_at = "" +ui.dev.clients.general.public_key.cache.failures = "" +ui.dev.clients.general.public_key.cache.kids = "" +ui.dev.clients.general.public_key.cache.last_checked_at = "" +ui.dev.clients.general.public_key.cache.last_success = "" +ui.dev.clients.general.public_key.cache.parsed_key_n = "" +ui.dev.clients.general.public_key.cache.parsed_keys = "" +ui.dev.clients.general.public_key.cache.status = "" +ui.dev.clients.general.public_key.cache.title = "" +ui.dev.clients.general.public_key.cache.uri = "" +ui.dev.clients.general.public_key.revoke_cache = "" \ No newline at end of file diff --git a/userfront/assets/translations/ko.toml b/userfront/assets/translations/ko.toml index 76a7cb8c..86c4a0f6 100644 --- a/userfront/assets/translations/ko.toml +++ b/userfront/assets/translations/ko.toml @@ -618,3 +618,62 @@ uppercase = "대문자" label = "이메일 주소" title = "이메일 인증" +msg.admin.users.detail.history_desc = "" +msg.admin.users.detail.no_history = "" +msg.admin.users.detail.no_tenants = "" +msg.admin.users.detail.reset_auto_desc = "" +msg.admin.users.detail.security_desc = "" +msg.admin.users.detail.tenant_slug_help = "" +msg.admin.users.detail.tenants_desc = "" +msg.common.copied = "" +msg.dev.clients.general.public_key.allowed_algorithms_tooltip = "" +msg.dev.clients.general.public_key.cache.missing_algorithm_badge = "" +msg.dev.clients.general.public_key.cache.missing_algorithm_reason = "" +msg.dev.clients.general.public_key.cache.missing_algorithms_help = "" +msg.dev.clients.general.public_key.cache.missing_algorithms_title = "" +msg.dev.clients.general.public_key.cache.parsed_keys_empty = "" +msg.dev.clients.general.public_key.cache.parsed_keys_help = "" +msg.dev.clients.general.public_key.cache.unsupported_algorithm_reason = "" +msg.dev.clients.general.public_key.cache.unsupported_algorithms_help = "" +msg.dev.clients.general.public_key.cache.unsupported_algorithms_title = "" +msg.dev.clients.general.public_key.cache_empty = "" +msg.dev.clients.general.public_key.cache_help = "" +msg.dev.clients.general.public_key.cache_refresh_failed = "" +msg.dev.clients.general.public_key.cache_refreshed = "" +msg.dev.clients.general.public_key.cache_revoke_confirm = "" +msg.dev.clients.general.public_key.cache_revoke_failed = "" +msg.dev.clients.general.public_key.cache_revoked = "" +msg.dev.clients.general.public_key.validation.missing_parsed_algorithms = "" +msg.dev.clients.general.public_key.validation.unsupported_parsed_algorithms = "" +ui.admin.users.create.form.is_login_id = "" +ui.admin.users.detail.form.email = "" +ui.admin.users.detail.form.is_login_id = "" +ui.admin.users.detail.form.role_rp_admin = "" +ui.admin.users.detail.form.tenant_slug = "" +ui.admin.users.detail.generate_button = "" +ui.admin.users.detail.history_title = "" +ui.admin.users.detail.manual_confirm = "" +ui.admin.users.detail.manual_password = "" +ui.admin.users.detail.password_done = "" +ui.admin.users.detail.reset_auto = "" +ui.admin.users.detail.reset_execute = "" +ui.admin.users.detail.reset_manual = "" +ui.admin.users.detail.save_tenants = "" +ui.admin.users.detail.tabs.info = "" +ui.admin.users.detail.tabs.security = "" +ui.admin.users.detail.tabs.tenants = "" +ui.admin.users.detail.updated_at = "" +ui.dev.clients.general.public_key.allowed_algorithms_info = "" +ui.dev.clients.general.public_key.cache.cached_at = "" +ui.dev.clients.general.public_key.cache.error = "" +ui.dev.clients.general.public_key.cache.expires_at = "" +ui.dev.clients.general.public_key.cache.failures = "" +ui.dev.clients.general.public_key.cache.kids = "" +ui.dev.clients.general.public_key.cache.last_checked_at = "" +ui.dev.clients.general.public_key.cache.last_success = "" +ui.dev.clients.general.public_key.cache.parsed_key_n = "" +ui.dev.clients.general.public_key.cache.parsed_keys = "" +ui.dev.clients.general.public_key.cache.status = "" +ui.dev.clients.general.public_key.cache.title = "" +ui.dev.clients.general.public_key.cache.uri = "" +ui.dev.clients.general.public_key.revoke_cache = "" \ No newline at end of file diff --git a/userfront/assets/translations/template.toml b/userfront/assets/translations/template.toml index a198bb53..bd32d029 100644 --- a/userfront/assets/translations/template.toml +++ b/userfront/assets/translations/template.toml @@ -618,3 +618,62 @@ uppercase = "" label = "" title = "" +msg.admin.users.detail.history_desc = "" +msg.admin.users.detail.no_history = "" +msg.admin.users.detail.no_tenants = "" +msg.admin.users.detail.reset_auto_desc = "" +msg.admin.users.detail.security_desc = "" +msg.admin.users.detail.tenant_slug_help = "" +msg.admin.users.detail.tenants_desc = "" +msg.common.copied = "" +msg.dev.clients.general.public_key.allowed_algorithms_tooltip = "" +msg.dev.clients.general.public_key.cache.missing_algorithm_badge = "" +msg.dev.clients.general.public_key.cache.missing_algorithm_reason = "" +msg.dev.clients.general.public_key.cache.missing_algorithms_help = "" +msg.dev.clients.general.public_key.cache.missing_algorithms_title = "" +msg.dev.clients.general.public_key.cache.parsed_keys_empty = "" +msg.dev.clients.general.public_key.cache.parsed_keys_help = "" +msg.dev.clients.general.public_key.cache.unsupported_algorithm_reason = "" +msg.dev.clients.general.public_key.cache.unsupported_algorithms_help = "" +msg.dev.clients.general.public_key.cache.unsupported_algorithms_title = "" +msg.dev.clients.general.public_key.cache_empty = "" +msg.dev.clients.general.public_key.cache_help = "" +msg.dev.clients.general.public_key.cache_refresh_failed = "" +msg.dev.clients.general.public_key.cache_refreshed = "" +msg.dev.clients.general.public_key.cache_revoke_confirm = "" +msg.dev.clients.general.public_key.cache_revoke_failed = "" +msg.dev.clients.general.public_key.cache_revoked = "" +msg.dev.clients.general.public_key.validation.missing_parsed_algorithms = "" +msg.dev.clients.general.public_key.validation.unsupported_parsed_algorithms = "" +ui.admin.users.create.form.is_login_id = "" +ui.admin.users.detail.form.email = "" +ui.admin.users.detail.form.is_login_id = "" +ui.admin.users.detail.form.role_rp_admin = "" +ui.admin.users.detail.form.tenant_slug = "" +ui.admin.users.detail.generate_button = "" +ui.admin.users.detail.history_title = "" +ui.admin.users.detail.manual_confirm = "" +ui.admin.users.detail.manual_password = "" +ui.admin.users.detail.password_done = "" +ui.admin.users.detail.reset_auto = "" +ui.admin.users.detail.reset_execute = "" +ui.admin.users.detail.reset_manual = "" +ui.admin.users.detail.save_tenants = "" +ui.admin.users.detail.tabs.info = "" +ui.admin.users.detail.tabs.security = "" +ui.admin.users.detail.tabs.tenants = "" +ui.admin.users.detail.updated_at = "" +ui.dev.clients.general.public_key.allowed_algorithms_info = "" +ui.dev.clients.general.public_key.cache.cached_at = "" +ui.dev.clients.general.public_key.cache.error = "" +ui.dev.clients.general.public_key.cache.expires_at = "" +ui.dev.clients.general.public_key.cache.failures = "" +ui.dev.clients.general.public_key.cache.kids = "" +ui.dev.clients.general.public_key.cache.last_checked_at = "" +ui.dev.clients.general.public_key.cache.last_success = "" +ui.dev.clients.general.public_key.cache.parsed_key_n = "" +ui.dev.clients.general.public_key.cache.parsed_keys = "" +ui.dev.clients.general.public_key.cache.status = "" +ui.dev.clients.general.public_key.cache.title = "" +ui.dev.clients.general.public_key.cache.uri = "" +ui.dev.clients.general.public_key.revoke_cache = "" \ No newline at end of file