forked from baron/baron-sso
PKCE 앱 클라이언트 시크릿 버튼 제거 및 안내 문구 추가
This commit is contained in:
@@ -213,11 +213,15 @@ function ClientDetailsPage() {
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
// Client Secret from API
|
const hasClientSecret = client.type === "private";
|
||||||
const secretPlaceholder = "SECRET_NOT_AVAILABLE";
|
const secretPlaceholder = "SECRET_NOT_AVAILABLE";
|
||||||
const clientSecret = client?.clientSecret || secretPlaceholder;
|
const clientSecret = hasClientSecret
|
||||||
|
? client?.clientSecret || secretPlaceholder
|
||||||
|
: t("ui.common.na", "N/A");
|
||||||
const displaySecret =
|
const displaySecret =
|
||||||
clientSecret === secretPlaceholder
|
!hasClientSecret
|
||||||
|
? t("msg.dev.clients.details.secret_not_applicable", "PKCE 앱에는 Client Secret이 없습니다.")
|
||||||
|
: clientSecret === secretPlaceholder
|
||||||
? t("msg.dev.clients.details.secret_unavailable", "SECRET_NOT_AVAILABLE")
|
? t("msg.dev.clients.details.secret_unavailable", "SECRET_NOT_AVAILABLE")
|
||||||
: clientSecret;
|
: clientSecret;
|
||||||
|
|
||||||
@@ -327,61 +331,73 @@ function ClientDetailsPage() {
|
|||||||
{showSecret ? displaySecret : "••••••••••••••••"}
|
{showSecret ? displaySecret : "••••••••••••••••"}
|
||||||
</p>
|
</p>
|
||||||
<div className="flex gap-2 shrink-0">
|
<div className="flex gap-2 shrink-0">
|
||||||
<Button
|
{hasClientSecret ? (
|
||||||
variant="secondary"
|
<>
|
||||||
size="icon"
|
<Button
|
||||||
onClick={() => setShowSecret(!showSecret)}
|
variant="secondary"
|
||||||
aria-label={
|
size="icon"
|
||||||
showSecret
|
onClick={() => setShowSecret(!showSecret)}
|
||||||
? t(
|
aria-label={
|
||||||
"ui.dev.clients.details.secret.hide",
|
showSecret
|
||||||
"비밀키 숨기기",
|
? t(
|
||||||
|
"ui.dev.clients.details.secret.hide",
|
||||||
|
"비밀키 숨기기",
|
||||||
|
)
|
||||||
|
: t(
|
||||||
|
"ui.dev.clients.details.secret.show",
|
||||||
|
"비밀키 보기",
|
||||||
|
)
|
||||||
|
}
|
||||||
|
>
|
||||||
|
{showSecret ? (
|
||||||
|
<EyeOff className="h-4 w-4" />
|
||||||
|
) : (
|
||||||
|
<Eye className="h-4 w-4" />
|
||||||
|
)}
|
||||||
|
</Button>
|
||||||
|
<Button
|
||||||
|
variant="secondary"
|
||||||
|
size="icon"
|
||||||
|
onClick={handleRotateSecret}
|
||||||
|
disabled={rotateMutation.isPending}
|
||||||
|
title={t(
|
||||||
|
"ui.dev.clients.details.secret.rotate",
|
||||||
|
"비밀키 재발급 (Rotate)",
|
||||||
|
)}
|
||||||
|
>
|
||||||
|
<RefreshCw
|
||||||
|
className={cn(
|
||||||
|
"h-4 w-4",
|
||||||
|
rotateMutation.isPending && "animate-spin",
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
</Button>
|
||||||
|
<CopyButton
|
||||||
|
value={clientSecret}
|
||||||
|
disabled={
|
||||||
|
!showSecret && clientSecret === secretPlaceholder
|
||||||
|
}
|
||||||
|
onCopy={() =>
|
||||||
|
toast(
|
||||||
|
t(
|
||||||
|
"msg.dev.clients.details.copy_client_secret",
|
||||||
|
"Client Secret이 복사되었습니다.",
|
||||||
|
),
|
||||||
)
|
)
|
||||||
: t(
|
}
|
||||||
"ui.dev.clients.details.secret.show",
|
/>
|
||||||
"비밀키 보기",
|
</>
|
||||||
)
|
) : null}
|
||||||
}
|
|
||||||
>
|
|
||||||
{showSecret ? (
|
|
||||||
<EyeOff className="h-4 w-4" />
|
|
||||||
) : (
|
|
||||||
<Eye className="h-4 w-4" />
|
|
||||||
)}
|
|
||||||
</Button>
|
|
||||||
<Button
|
|
||||||
variant="secondary"
|
|
||||||
size="icon"
|
|
||||||
onClick={handleRotateSecret}
|
|
||||||
disabled={rotateMutation.isPending}
|
|
||||||
title={t(
|
|
||||||
"ui.dev.clients.details.secret.rotate",
|
|
||||||
"비밀키 재발급 (Rotate)",
|
|
||||||
)}
|
|
||||||
>
|
|
||||||
<RefreshCw
|
|
||||||
className={cn(
|
|
||||||
"h-4 w-4",
|
|
||||||
rotateMutation.isPending && "animate-spin",
|
|
||||||
)}
|
|
||||||
/>
|
|
||||||
</Button>
|
|
||||||
<CopyButton
|
|
||||||
value={clientSecret}
|
|
||||||
disabled={
|
|
||||||
!showSecret && clientSecret === secretPlaceholder
|
|
||||||
}
|
|
||||||
onCopy={() =>
|
|
||||||
toast(
|
|
||||||
t(
|
|
||||||
"msg.dev.clients.details.copy_client_secret",
|
|
||||||
"Client Secret이 복사되었습니다.",
|
|
||||||
),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{!hasClientSecret ? (
|
||||||
|
<p className="mt-2 text-sm text-muted-foreground">
|
||||||
|
{t(
|
||||||
|
"msg.dev.clients.details.secret_not_applicable",
|
||||||
|
"PKCE 앱에는 Client Secret이 없습니다.",
|
||||||
|
)}
|
||||||
|
</p>
|
||||||
|
) : null}
|
||||||
</div>
|
</div>
|
||||||
</CardContent>
|
</CardContent>
|
||||||
</Card>
|
</Card>
|
||||||
|
|||||||
@@ -362,6 +362,7 @@ create_forbidden = "You do not have permission to create this RP. Ask an adminis
|
|||||||
save_error = "Save Error"
|
save_error = "Save Error"
|
||||||
save_forbidden = "You do not have permission to edit this RP. Ask an administrator to grant RP General Settings or RP Admin relationship."
|
save_forbidden = "You do not have permission to edit this RP. Ask an administrator to grant RP General Settings or RP Admin relationship."
|
||||||
secret_rotated = "Secret Rotated"
|
secret_rotated = "Secret Rotated"
|
||||||
|
secret_not_applicable = "PKCE apps do not have a client secret."
|
||||||
secret_unavailable = "SECRET_NOT_AVAILABLE"
|
secret_unavailable = "SECRET_NOT_AVAILABLE"
|
||||||
subtitle = "Manage OIDC credentials and endpoints."
|
subtitle = "Manage OIDC credentials and endpoints."
|
||||||
|
|
||||||
|
|||||||
@@ -362,6 +362,7 @@ create_forbidden = "이 RP를 생성할 권한이 없습니다.\n관리자에게
|
|||||||
save_error = "저장 실패: {{error}}"
|
save_error = "저장 실패: {{error}}"
|
||||||
save_forbidden = "이 RP 설정을 수정할 권한이 없습니다.\n관리자에게 RP 일반 설정 또는 RP 관리자 관계 부여를 요청해 주세요."
|
save_forbidden = "이 RP 설정을 수정할 권한이 없습니다.\n관리자에게 RP 일반 설정 또는 RP 관리자 관계 부여를 요청해 주세요."
|
||||||
secret_rotated = "Client Secret이 재발급되었습니다."
|
secret_rotated = "Client Secret이 재발급되었습니다."
|
||||||
|
secret_not_applicable = "PKCE 앱에는 Client Secret이 없습니다."
|
||||||
secret_unavailable = "SECRET_NOT_AVAILABLE"
|
secret_unavailable = "SECRET_NOT_AVAILABLE"
|
||||||
subtitle = "OIDC 자격 증명과 엔드포인트를 관리합니다."
|
subtitle = "OIDC 자격 증명과 엔드포인트를 관리합니다."
|
||||||
|
|
||||||
|
|||||||
@@ -408,6 +408,7 @@ create_forbidden = ""
|
|||||||
save_error = ""
|
save_error = ""
|
||||||
save_forbidden = ""
|
save_forbidden = ""
|
||||||
secret_rotated = ""
|
secret_rotated = ""
|
||||||
|
secret_not_applicable = ""
|
||||||
secret_unavailable = ""
|
secret_unavailable = ""
|
||||||
subtitle = ""
|
subtitle = ""
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user