forked from baron/baron-sso
code check 오류 수정
This commit is contained in:
@@ -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>
|
||||||
|
|||||||
@@ -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 }) => {
|
||||||
|
|||||||
@@ -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");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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."
|
||||||
|
|||||||
@@ -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 = "자신의 계정은 삭제할 수 없습니다."
|
||||||
|
|||||||
@@ -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 = ""
|
||||||
|
|||||||
Reference in New Issue
Block a user