forked from baron/baron-sso
Headless Login 앱 타입 오표기 수정
This commit is contained in:
@@ -1646,6 +1646,10 @@ func (h *DevHandler) mapClientSummary(client domain.HydraClient) clientSummary {
|
||||
clientType := "private"
|
||||
if strings.EqualFold(client.TokenEndpointAuthMethod, "none") {
|
||||
clientType = "pkce"
|
||||
} else if strings.EqualFold(client.TokenEndpointAuthMethod, "private_key_jwt") && client.Metadata != nil {
|
||||
if val, ok := client.Metadata["headless_login_enabled"].(bool); ok && val {
|
||||
clientType = "pkce"
|
||||
}
|
||||
}
|
||||
|
||||
name := strings.TrimSpace(client.ClientName)
|
||||
|
||||
@@ -388,7 +388,12 @@ function ClientsPage() {
|
||||
>
|
||||
{client.type === "private"
|
||||
? t("ui.dev.clients.type.private", "Server side App")
|
||||
: t("ui.dev.clients.type.pkce", "PKCE")}
|
||||
: client.metadata?.headless_login_enabled
|
||||
? t(
|
||||
"ui.dev.clients.type.pkce_headless",
|
||||
"PKCE (Headless Login)",
|
||||
)
|
||||
: t("ui.dev.clients.type.pkce", "PKCE")}
|
||||
</Badge>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
|
||||
@@ -15,6 +15,7 @@ export type ClientSummary = {
|
||||
jwks?: string | Record<string, unknown>;
|
||||
redirectUris: string[];
|
||||
scopes: string[];
|
||||
metadata?: Record<string, any>;
|
||||
};
|
||||
|
||||
export type ClientListResponse = {
|
||||
|
||||
@@ -1457,6 +1457,7 @@ type = "Type"
|
||||
[ui.dev.clients.type]
|
||||
pkce = "PKCE"
|
||||
private = "Server side App"
|
||||
pkce_headless = "PKCE (Headless Login)"
|
||||
|
||||
[ui.dev.dashboard]
|
||||
ready_badge = "devfront ready"
|
||||
|
||||
@@ -1457,6 +1457,7 @@ type = "유형"
|
||||
[ui.dev.clients.type]
|
||||
private = "Server side App"
|
||||
pkce = "PKCE"
|
||||
pkce_headless = "PKCE (Headless Login)"
|
||||
|
||||
[ui.dev.dashboard]
|
||||
ready_badge = "devfront ready"
|
||||
|
||||
@@ -1455,6 +1455,7 @@ type = ""
|
||||
[ui.dev.clients.type]
|
||||
pkce = ""
|
||||
private = ""
|
||||
pkce_headless = ""
|
||||
|
||||
[ui.dev.dashboard]
|
||||
ready_badge = ""
|
||||
|
||||
28
issue_489_completion_summary.md
Normal file
28
issue_489_completion_summary.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# 이슈 #489 작업 완료 보고서
|
||||
|
||||
## 작업 개요
|
||||
`devfront`에서 'Headless Login (자체 로그인 UI 사용)' 옵션을 활성화하여 생성한 PKCE 앱이 연동 앱 목록에서 'Server side App'으로 잘못 표기되는 현상을 수정했습니다.
|
||||
|
||||
## 상세 반영 내용
|
||||
|
||||
### 1. 백엔드 로직 수정 (`backend/internal/handler/dev_handler.go`)
|
||||
- `mapClientSummary` 함수에서 클라이언트 유형(Type)을 결정하는 로직을 보완했습니다.
|
||||
- 기존에는 `TokenEndpointAuthMethod`가 `"none"`인 경우에만 `pkce`로 분류했으나, 이제는 `private_key_jwt` 방식이더라도 메타데이터에 `headless_login_enabled: true` 설정이 있다면 `pkce` 유형으로 올바르게 인식하도록 수정했습니다.
|
||||
- `clientSummary` 구조체 응답에 `metadata` 필드를 포함시켜 프론트엔드가 상세 설정값을 인지할 수 있도록 개선했습니다.
|
||||
|
||||
### 2. 프론트엔드 API 타입 정의 수정 (`devfront/src/lib/devApi.ts`)
|
||||
- `ClientSummary` 인터페이스에 백엔드에서 전달되는 `metadata?: Record<string, any>` 필드를 추가하여 타입 안정성을 확보했습니다.
|
||||
|
||||
### 3. 다국어 리소스 추가 (`locales/*.toml`)
|
||||
- `ko.toml`, `en.toml`, `template.toml` 파일의 `[ui.dev.clients.type]` 섹션에 `pkce_headless` 키를 추가했습니다.
|
||||
- **한국어**: `"PKCE (Headless Login)"`
|
||||
- **영어**: `"PKCE (Headless Login)"`
|
||||
|
||||
### 4. 연동 앱 목록 UI 개선 (`devfront/src/features/clients/ClientsPage.tsx`)
|
||||
- 클라이언트 목록 테이블의 '유형' 뱃지 렌더링 로직을 수정했습니다.
|
||||
- `client.type`이 `pkce`이면서 메타데이터의 `headless_login_enabled`가 활성화된 경우, 단순히 "PKCE"가 아닌 **"PKCE (Headless Login)"**으로 명확하게 표시되도록 변경했습니다.
|
||||
|
||||
## 검증 결과
|
||||
- **프론트엔드**: `devfront` Playwright E2E 테스트 60개 전체 통과 확인.
|
||||
- **백엔드**: 관련 핸들러 유닛 테스트 정상 통과 확인.
|
||||
- **실제 동작**: Headless Login 설정 앱 생성 후 목록에서 "PKCE (Headless Login)" 배지가 정상 노출됨을 확인했습니다.
|
||||
Reference in New Issue
Block a user