1
0
forked from baron/baron-sso

code check 오류 수정

This commit is contained in:
2026-05-04 13:17:40 +09:00
parent 428ea888a7
commit 128ac94575
10 changed files with 38 additions and 37 deletions

View File

@@ -570,10 +570,7 @@ function TenantListPage() {
<span>{tenant.name}</span> <span>{tenant.name}</span>
{isSeedTenant(tenant) && ( {isSeedTenant(tenant) && (
<Badge variant="secondary" className="text-[10px]"> <Badge variant="secondary" className="text-[10px]">
{t( {t("ui.admin.tenants.seed_badge", "초기 설정")}
"ui.admin.tenants.seed_badge",
"초기 설정",
)}
</Badge> </Badge>
)} )}
</div> </div>

View File

@@ -103,9 +103,7 @@ test.describe("Seed tenant protection", () => {
const normalRow = page.getByRole("row", { name: /일반 테넌트/ }); const normalRow = page.getByRole("row", { name: /일반 테넌트/ });
await expect(normalRow.getByRole("checkbox")).toBeEnabled(); await expect(normalRow.getByRole("checkbox")).toBeEnabled();
await expect( await expect(normalRow.getByRole("button", { name: /삭제/ })).toBeEnabled();
normalRow.getByRole("button", { name: /삭제/ }),
).toBeEnabled();
}); });
test("disables delete action on seed tenant profile", async ({ page }) => { test("disables delete action on seed tenant profile", async ({ page }) => {

View File

@@ -217,8 +217,8 @@ test.describe("Tenants Management", () => {
expect(importBody).toContain('filename="tenants.csv"'); expect(importBody).toContain('filename="tenants.csv"');
if (browserName !== "webkit") { if (browserName !== "webkit") {
if (testInfo.project.name !== "webkit") { if (testInfo.project.name !== "webkit") {
expect(importBody).toContain("tenant-alpha-id"); expect(importBody).toContain("tenant-alpha-id");
} }
} }
}); });

View File

@@ -14,8 +14,8 @@ const (
MetadataIDTokenClaims = "id_token_claims" MetadataIDTokenClaims = "id_token_claims"
MetadataBackChannelLogoutURI = "backchannel_logout_uri" MetadataBackChannelLogoutURI = "backchannel_logout_uri"
MetadataBackChannelLogoutSessionRequired = "backchannel_logout_session_required" MetadataBackChannelLogoutSessionRequired = "backchannel_logout_session_required"
MetadataAutoLoginSupported = "auto_login_supported" MetadataAutoLoginSupported = "auto_login_supported"
MetadataAutoLoginURL = "auto_login_url" MetadataAutoLoginURL = "auto_login_url"
) )
type HydraClient struct { type HydraClient struct {

View File

@@ -85,21 +85,21 @@ const (
) )
type AuthHandler struct { type AuthHandler struct {
SmsService domain.SmsService SmsService domain.SmsService
EmailService domain.EmailService EmailService domain.EmailService
RedisService domain.RedisRepository RedisService domain.RedisRepository
HeadlessJWKS *service.HeadlessJWKSCacheService HeadlessJWKS *service.HeadlessJWKSCacheService
KratosAdmin service.KratosAdminService KratosAdmin service.KratosAdminService
IdpProvider domain.IdentityProvider IdpProvider domain.IdentityProvider
AuditRepo domain.AuditRepository AuditRepo domain.AuditRepository
OathkeeperRepo domain.OathkeeperLogRepository OathkeeperRepo domain.OathkeeperLogRepository
Hydra *service.HydraAdminService Hydra *service.HydraAdminService
BackchannelLogout *service.BackchannelLogoutService BackchannelLogout *service.BackchannelLogoutService
TenantService service.TenantService TenantService service.TenantService
KetoService service.KetoService KetoService service.KetoService
KetoOutboxRepo repository.KetoOutboxRepository KetoOutboxRepo repository.KetoOutboxRepository
UserRepo repository.UserRepository UserRepo repository.UserRepository
ConsentRepo repository.ClientConsentRepository ConsentRepo repository.ClientConsentRepository
RPUserMetadataRepo repository.RPUserMetadataRepository RPUserMetadataRepo repository.RPUserMetadataRepository
} }

View File

@@ -138,7 +138,7 @@ func TestTenantHandlerDeleteTenantsBulkRejectsSeedTenant(t *testing.T) {
return c.Next() return c.Next()
}) })
app.Delete("/tenants/bulk", (&TenantHandler{DB: db}).DeleteTenantsBulk) app.Delete("/tenants/bulk", (&TenantHandler{DB: db}).DeleteTenantsBulk)
body, _ := json.Marshal(map[string][]string{"ids": []string{seed.ID, normal.ID}}) body, _ := json.Marshal(map[string][]string{"ids": {seed.ID, normal.ID}})
req := httptest.NewRequest(http.MethodDelete, "/tenants/bulk", bytes.NewReader(body)) req := httptest.NewRequest(http.MethodDelete, "/tenants/bulk", bytes.NewReader(body))
req.Header.Set("Content-Type", "application/json") req.Header.Set("Content-Type", "application/json")
resp, err := app.Test(req) resp, err := app.Test(req)

View File

@@ -339,10 +339,14 @@ function ClientGeneralPage() {
const [initialStatus, setInitialStatus] = useState<ClientStatus>("active"); const [initialStatus, setInitialStatus] = useState<ClientStatus>("active");
const [redirectUris, setRedirectUris] = useState(""); const [redirectUris, setRedirectUris] = useState("");
const [backchannelLogoutUri, setBackchannelLogoutUri] = useState(""); const [backchannelLogoutUri, setBackchannelLogoutUri] = useState("");
const [backchannelLogoutSessionRequired, setBackchannelLogoutSessionRequired] = const [
useState(false); backchannelLogoutSessionRequired,
const [isBackchannelSessionRequiredInfoOpen, setIsBackchannelSessionRequiredInfoOpen] = setBackchannelLogoutSessionRequired,
useState(false); ] = useState(false);
const [
isBackchannelSessionRequiredInfoOpen,
setIsBackchannelSessionRequiredInfoOpen,
] = useState(false);
const [tenantAccessRestricted, setTenantAccessRestricted] = useState(false); const [tenantAccessRestricted, setTenantAccessRestricted] = useState(false);
const [allowedTenantIds, setAllowedTenantIds] = useState<string[]>([]); const [allowedTenantIds, setAllowedTenantIds] = useState<string[]>([]);
const [tenantSearch, setTenantSearch] = useState(""); const [tenantSearch, setTenantSearch] = useState("");
@@ -1610,9 +1614,7 @@ function ClientGeneralPage() {
: "text-muted-foreground/60 hover:text-primary" : "text-muted-foreground/60 hover:text-primary"
}`} }`}
onClick={() => onClick={() =>
setIsBackchannelSessionRequiredInfoOpen( setIsBackchannelSessionRequiredInfoOpen((prev) => !prev)
(prev) => !prev,
)
} }
aria-label={t( aria-label={t(
"ui.dev.clients.general.backchannel_logout.session_required_info", "ui.dev.clients.general.backchannel_logout.session_required_info",
@@ -1657,9 +1659,7 @@ function ClientGeneralPage() {
id="backchannel-logout-session-required" id="backchannel-logout-session-required"
checked={backchannelLogoutSessionRequired} checked={backchannelLogoutSessionRequired}
onCheckedChange={setBackchannelLogoutSessionRequired} onCheckedChange={setBackchannelLogoutSessionRequired}
disabled={ disabled={isGeneralSettingsReadOnly || !hasBackchannelLogoutUri}
isGeneralSettingsReadOnly || !hasBackchannelLogoutUri
}
/> />
</div> </div>
</div> </div>

View File

@@ -1095,6 +1095,7 @@ delete_selected = "Delete Selected"
export_with_ids = "Include UUIDs" export_with_ids = "Include UUIDs"
export_without_ids = "Export without UUIDs" export_without_ids = "Export without UUIDs"
import = "Import" import = "Import"
seed_badge = "Seed"
title = "Tenant Registry" title = "Tenant Registry"
view_org_chart = "View Full Org Chart" view_org_chart = "View Full Org Chart"
@@ -1188,6 +1189,7 @@ import_partial_success = "Imported some organization data successfully."
[msg.admin.tenants] [msg.admin.tenants]
delete_bulk_confirm = "Delete {{count}} selected tenants?" delete_bulk_confirm = "Delete {{count}} selected tenants?"
seed_delete_blocked = "Seed tenants cannot be deleted."
[msg.admin.users] [msg.admin.users]
self_delete_blocked = "You cannot delete your own account." self_delete_blocked = "You cannot delete your own account."

View File

@@ -1570,6 +1570,7 @@ user = "TENANT MEMBER"
[ui.admin.tenants] [ui.admin.tenants]
add = "테넌트 추가" add = "테넌트 추가"
delete_selected = "선택 삭제" delete_selected = "선택 삭제"
seed_badge = "초기 설정"
title = "테넌트 목록" title = "테넌트 목록"
view_org_chart = "전체 조직도 보기" view_org_chart = "전체 조직도 보기"
@@ -1648,6 +1649,7 @@ import_partial_success = "일부 조직 정보를 가져왔습니다."
[msg.admin.tenants] [msg.admin.tenants]
delete_bulk_confirm = "선택한 {{count}}개 테넌트를 삭제할까요?" delete_bulk_confirm = "선택한 {{count}}개 테넌트를 삭제할까요?"
seed_delete_blocked = "초기 설정 테넌트는 삭제할 수 없습니다."
[msg.admin.users] [msg.admin.users]
self_delete_blocked = "자신의 계정은 삭제할 수 없습니다." self_delete_blocked = "자신의 계정은 삭제할 수 없습니다."

View File

@@ -1439,6 +1439,7 @@ user = ""
[ui.admin.tenants] [ui.admin.tenants]
add = "" add = ""
delete_selected = "" delete_selected = ""
seed_badge = ""
title = "" title = ""
view_org_chart = "" view_org_chart = ""
@@ -1520,6 +1521,7 @@ delete_bulk_confirm = ""
import_empty = "" import_empty = ""
import_error = "" import_error = ""
import_result = "" import_result = ""
seed_delete_blocked = ""
[msg.admin.tenants.import_preview] [msg.admin.tenants.import_preview]
description = "" description = ""