chore: add docs link and rename to Federated Client Credentials (#636)

Co-authored-by: Elias Schneider <login@eliasschneider.com>
This commit is contained in:
Alessandro (Ale) Segala
2025-06-09 12:15:37 -07:00
committed by GitHub
parent f4af35f86b
commit df5c1ed1f8
15 changed files with 78 additions and 57 deletions

View File

@@ -346,10 +346,10 @@
"the_device_has_been_authorized": "Zařízení bylo autorizováno.", "the_device_has_been_authorized": "Zařízení bylo autorizováno.",
"enter_code_displayed_in_previous_step": "Zadejte kód, který byl zobrazen v předchozím kroku.", "enter_code_displayed_in_previous_step": "Zadejte kód, který byl zobrazen v předchozím kroku.",
"authorize": "Autorizovat", "authorize": "Autorizovat",
"federated_identities": "Federated Identities", "federated_client_credentials": "Federated Client Credentials",
"federated_identities_description": "Using federated identities, you can authenticate OIDC clients using JWT tokens issued by third-party authorities.", "federated_client_credentials_description": "Using federated client credentials, you can authenticate OIDC clients using JWT tokens issued by third-party authorities.",
"add_federated_identity": "Add Federated Identity", "add_federated_client_credential": "Add Federated Client Credential",
"add_another_federated_identity": "Add another federated identity", "add_another_federated_client_credential": "Add another federated client credential",
"oidc_allowed_group_count": "Počet povolených skupin", "oidc_allowed_group_count": "Počet povolených skupin",
"unrestricted": "Bez omezení", "unrestricted": "Bez omezení",
"show_advanced_options": "Show Advanced Options", "show_advanced_options": "Show Advanced Options",

View File

@@ -346,10 +346,10 @@
"the_device_has_been_authorized": "The device has been authorized.", "the_device_has_been_authorized": "The device has been authorized.",
"enter_code_displayed_in_previous_step": "Enter the code that was displayed in the previous step.", "enter_code_displayed_in_previous_step": "Enter the code that was displayed in the previous step.",
"authorize": "Authorize", "authorize": "Authorize",
"federated_identities": "Federated Identities", "federated_client_credentials": "Federated Client Credentials",
"federated_identities_description": "Using federated identities, you can authenticate OIDC clients using JWT tokens issued by third-party authorities.", "federated_client_credentials_description": "Using federated client credentials, you can authenticate OIDC clients using JWT tokens issued by third-party authorities.",
"add_federated_identity": "Add Federated Identity", "add_federated_client_credential": "Add Federated Client Credential",
"add_another_federated_identity": "Add another federated identity", "add_another_federated_client_credential": "Add another federated client credential",
"oidc_allowed_group_count": "Allowed Group Count", "oidc_allowed_group_count": "Allowed Group Count",
"unrestricted": "Unrestricted", "unrestricted": "Unrestricted",
"show_advanced_options": "Show Advanced Options", "show_advanced_options": "Show Advanced Options",

View File

@@ -346,10 +346,10 @@
"the_device_has_been_authorized": "Das Gerät wurde autorisiert.", "the_device_has_been_authorized": "Das Gerät wurde autorisiert.",
"enter_code_displayed_in_previous_step": "Gib den Code ein, der im vorherigen Schritt angezeigt wurde.", "enter_code_displayed_in_previous_step": "Gib den Code ein, der im vorherigen Schritt angezeigt wurde.",
"authorize": "Autorisieren", "authorize": "Autorisieren",
"federated_identities": "Federated Identities", "federated_client_credentials": "Federated Client Credentials",
"federated_identities_description": "Using federated identities, you can authenticate OIDC clients using JWT tokens issued by third-party authorities.", "federated_client_credentials_description": "Using federated client credentials, you can authenticate OIDC clients using JWT tokens issued by third-party authorities.",
"add_federated_identity": "Add Federated Identity", "add_federated_client_credential": "Add Federated Client Credential",
"add_another_federated_identity": "Add another federated identity", "add_another_federated_client_credential": "Add another federated client credential",
"oidc_allowed_group_count": "Erlaubte Gruppenanzahl", "oidc_allowed_group_count": "Erlaubte Gruppenanzahl",
"unrestricted": "Uneingeschränkt", "unrestricted": "Uneingeschränkt",
"show_advanced_options": "Show Advanced Options", "show_advanced_options": "Show Advanced Options",

View File

@@ -3,6 +3,7 @@
"my_account": "My Account", "my_account": "My Account",
"logout": "Logout", "logout": "Logout",
"confirm": "Confirm", "confirm": "Confirm",
"docs": "Docs",
"key": "Key", "key": "Key",
"value": "Value", "value": "Value",
"remove_custom_claim": "Remove custom claim", "remove_custom_claim": "Remove custom claim",
@@ -346,10 +347,10 @@
"the_device_has_been_authorized": "The device has been authorized.", "the_device_has_been_authorized": "The device has been authorized.",
"enter_code_displayed_in_previous_step": "Enter the code that was displayed in the previous step.", "enter_code_displayed_in_previous_step": "Enter the code that was displayed in the previous step.",
"authorize": "Authorize", "authorize": "Authorize",
"federated_identities": "Federated Identities", "federated_client_credentials": "Federated Client Credentials",
"federated_identities_description": "Using federated identities, you can authenticate OIDC clients using JWT tokens issued by third-party authorities.", "federated_client_credentials_description": "Using federated client credentials, you can authenticate OIDC clients using JWT tokens issued by third-party authorities.",
"add_federated_identity": "Add Federated Identity", "add_federated_client_credential": "Add Federated Client Credential",
"add_another_federated_identity": "Add another federated identity", "add_another_federated_client_credential": "Add another federated client credential",
"oidc_allowed_group_count": "Allowed Group Count", "oidc_allowed_group_count": "Allowed Group Count",
"unrestricted": "Unrestricted", "unrestricted": "Unrestricted",
"show_advanced_options": "Show Advanced Options", "show_advanced_options": "Show Advanced Options",

View File

@@ -346,10 +346,10 @@
"the_device_has_been_authorized": "The device has been authorized.", "the_device_has_been_authorized": "The device has been authorized.",
"enter_code_displayed_in_previous_step": "Enter the code that was displayed in the previous step.", "enter_code_displayed_in_previous_step": "Enter the code that was displayed in the previous step.",
"authorize": "Authorize", "authorize": "Authorize",
"federated_identities": "Federated Identities", "federated_client_credentials": "Federated Client Credentials",
"federated_identities_description": "Using federated identities, you can authenticate OIDC clients using JWT tokens issued by third-party authorities.", "federated_client_credentials_description": "Using federated client credentials, you can authenticate OIDC clients using JWT tokens issued by third-party authorities.",
"add_federated_identity": "Add Federated Identity", "add_federated_client_credential": "Add Federated Client Credential",
"add_another_federated_identity": "Add another federated identity", "add_another_federated_client_credential": "Add another federated client credential",
"oidc_allowed_group_count": "Allowed Group Count", "oidc_allowed_group_count": "Allowed Group Count",
"unrestricted": "Unrestricted", "unrestricted": "Unrestricted",
"show_advanced_options": "Show Advanced Options", "show_advanced_options": "Show Advanced Options",

View File

@@ -346,10 +346,10 @@
"the_device_has_been_authorized": "The device has been authorized.", "the_device_has_been_authorized": "The device has been authorized.",
"enter_code_displayed_in_previous_step": "Enter the code that was displayed in the previous step.", "enter_code_displayed_in_previous_step": "Enter the code that was displayed in the previous step.",
"authorize": "Authorize", "authorize": "Authorize",
"federated_identities": "Federated Identities", "federated_client_credentials": "Federated Client Credentials",
"federated_identities_description": "Using federated identities, you can authenticate OIDC clients using JWT tokens issued by third-party authorities.", "federated_client_credentials_description": "Using federated client credentials, you can authenticate OIDC clients using JWT tokens issued by third-party authorities.",
"add_federated_identity": "Add Federated Identity", "add_federated_client_credential": "Add Federated Client Credential",
"add_another_federated_identity": "Add another federated identity", "add_another_federated_client_credential": "Add another federated client credential",
"oidc_allowed_group_count": "Allowed Group Count", "oidc_allowed_group_count": "Allowed Group Count",
"unrestricted": "Unrestricted", "unrestricted": "Unrestricted",
"show_advanced_options": "Show Advanced Options", "show_advanced_options": "Show Advanced Options",

View File

@@ -346,10 +346,10 @@
"the_device_has_been_authorized": "Il dispositivo è stato autorizzato.", "the_device_has_been_authorized": "Il dispositivo è stato autorizzato.",
"enter_code_displayed_in_previous_step": "Inserisci il codice visualizzato nel passaggio precedente.", "enter_code_displayed_in_previous_step": "Inserisci il codice visualizzato nel passaggio precedente.",
"authorize": "Autorizza", "authorize": "Autorizza",
"federated_identities": "Identità Federate", "federated_client_credentials": "Identità Federate",
"federated_identities_description": "Utilizzando identità federate, è possibile autenticare i client OIDC utilizzando i token JWT emessi da autorità di terze parti.", "federated_client_credentials_description": "Utilizzando identità federate, è possibile autenticare i client OIDC utilizzando i token JWT emessi da autorità di terze parti.",
"add_federated_identity": "Aggiungi Identità Federata", "add_federated_client_credential": "Aggiungi Identità Federata",
"add_another_federated_identity": "Aggiungi un'altra identità federata", "add_another_federated_client_credential": "Aggiungi un'altra identità federata",
"oidc_allowed_group_count": "Numero Gruppi Consentiti", "oidc_allowed_group_count": "Numero Gruppi Consentiti",
"unrestricted": "Illimitati", "unrestricted": "Illimitati",
"show_advanced_options": "Mostra Opzioni Avanzate", "show_advanced_options": "Mostra Opzioni Avanzate",

View File

@@ -346,10 +346,10 @@
"the_device_has_been_authorized": "The device has been authorized.", "the_device_has_been_authorized": "The device has been authorized.",
"enter_code_displayed_in_previous_step": "Enter the code that was displayed in the previous step.", "enter_code_displayed_in_previous_step": "Enter the code that was displayed in the previous step.",
"authorize": "Authorize", "authorize": "Authorize",
"federated_identities": "Federated Identities", "federated_client_credentials": "Federated Client Credentials",
"federated_identities_description": "Using federated identities, you can authenticate OIDC clients using JWT tokens issued by third-party authorities.", "federated_client_credentials_description": "Using federated client credentials, you can authenticate OIDC clients using JWT tokens issued by third-party authorities.",
"add_federated_identity": "Add Federated Identity", "add_federated_client_credential": "Add Federated Client Credential",
"add_another_federated_identity": "Add another federated identity", "add_another_federated_client_credential": "Add another federated client credential",
"oidc_allowed_group_count": "Allowed Group Count", "oidc_allowed_group_count": "Allowed Group Count",
"unrestricted": "Unrestricted", "unrestricted": "Unrestricted",
"show_advanced_options": "Show Advanced Options", "show_advanced_options": "Show Advanced Options",

View File

@@ -346,10 +346,10 @@
"the_device_has_been_authorized": "Urządzenie zostało autoryzowane.", "the_device_has_been_authorized": "Urządzenie zostało autoryzowane.",
"enter_code_displayed_in_previous_step": "Wprowadź kod wyświetlony w poprzednim kroku.", "enter_code_displayed_in_previous_step": "Wprowadź kod wyświetlony w poprzednim kroku.",
"authorize": "Autoryzuj", "authorize": "Autoryzuj",
"federated_identities": "Federated Identities", "federated_client_credentials": "Federated Client Credentials",
"federated_identities_description": "Using federated identities, you can authenticate OIDC clients using JWT tokens issued by third-party authorities.", "federated_client_credentials_description": "Using federated client credentials, you can authenticate OIDC clients using JWT tokens issued by third-party authorities.",
"add_federated_identity": "Add Federated Identity", "add_federated_client_credential": "Add Federated Client Credential",
"add_another_federated_identity": "Add another federated identity", "add_another_federated_client_credential": "Add another federated client credential",
"oidc_allowed_group_count": "Allowed Group Count", "oidc_allowed_group_count": "Allowed Group Count",
"unrestricted": "Unrestricted", "unrestricted": "Unrestricted",
"show_advanced_options": "Show Advanced Options", "show_advanced_options": "Show Advanced Options",

View File

@@ -346,10 +346,10 @@
"the_device_has_been_authorized": "The device has been authorized.", "the_device_has_been_authorized": "The device has been authorized.",
"enter_code_displayed_in_previous_step": "Enter the code that was displayed in the previous step.", "enter_code_displayed_in_previous_step": "Enter the code that was displayed in the previous step.",
"authorize": "Authorize", "authorize": "Authorize",
"federated_identities": "Federated Identities", "federated_client_credentials": "Federated Client Credentials",
"federated_identities_description": "Using federated identities, you can authenticate OIDC clients using JWT tokens issued by third-party authorities.", "federated_client_credentials_description": "Using federated client credentials, you can authenticate OIDC clients using JWT tokens issued by third-party authorities.",
"add_federated_identity": "Add Federated Identity", "add_federated_client_credential": "Add Federated Client Credential",
"add_another_federated_identity": "Add another federated identity", "add_another_federated_client_credential": "Add another federated client credential",
"oidc_allowed_group_count": "Allowed Group Count", "oidc_allowed_group_count": "Allowed Group Count",
"unrestricted": "Unrestricted", "unrestricted": "Unrestricted",
"show_advanced_options": "Show Advanced Options", "show_advanced_options": "Show Advanced Options",

View File

@@ -346,10 +346,10 @@
"the_device_has_been_authorized": "Устройство авторизовано.", "the_device_has_been_authorized": "Устройство авторизовано.",
"enter_code_displayed_in_previous_step": "Введите код, который был отображен на предыдущем шаге.", "enter_code_displayed_in_previous_step": "Введите код, который был отображен на предыдущем шаге.",
"authorize": "Авторизируйте", "authorize": "Авторизируйте",
"federated_identities": "Federated Identities", "federated_client_credentials": "Federated Client Credentials",
"federated_identities_description": "Using federated identities, you can authenticate OIDC clients using JWT tokens issued by third-party authorities.", "federated_client_credentials_description": "Using federated client credentials, you can authenticate OIDC clients using JWT tokens issued by third-party authorities.",
"add_federated_identity": "Add Federated Identity", "add_federated_client_credential": "Add Federated Client Credential",
"add_another_federated_identity": "Add another federated identity", "add_another_federated_client_credential": "Add another federated client credential",
"oidc_allowed_group_count": "Кол-во разрешенных групп", "oidc_allowed_group_count": "Кол-во разрешенных групп",
"unrestricted": "Не ограничено", "unrestricted": "Не ограничено",
"show_advanced_options": "Show Advanced Options", "show_advanced_options": "Show Advanced Options",

View File

@@ -346,10 +346,10 @@
"the_device_has_been_authorized": "设备已授权", "the_device_has_been_authorized": "设备已授权",
"enter_code_displayed_in_previous_step": "输入在上一步中显示的代码", "enter_code_displayed_in_previous_step": "输入在上一步中显示的代码",
"authorize": "授权", "authorize": "授权",
"federated_identities": "联合身份", "federated_client_credentials": "联合身份",
"federated_identities_description": "您可以使用联合身份,通过第三方授权机构签发的 JWT 令牌,对 OIDC 客户端进行认证。", "federated_client_credentials_description": "您可以使用联合身份,通过第三方授权机构签发的 JWT 令牌,对 OIDC 客户端进行认证。",
"add_federated_identity": "添加联合身份", "add_federated_client_credential": "添加联合身份",
"add_another_federated_identity": "添加另一个联合身份", "add_another_federated_client_credential": "添加另一个联合身份",
"oidc_allowed_group_count": "允许的群组数量", "oidc_allowed_group_count": "允许的群组数量",
"unrestricted": "不受限制", "unrestricted": "不受限制",
"show_advanced_options": "显示高级选项", "show_advanced_options": "显示高级选项",

View File

@@ -346,10 +346,10 @@
"the_device_has_been_authorized": "裝置已獲授權。", "the_device_has_been_authorized": "裝置已獲授權。",
"enter_code_displayed_in_previous_step": "請輸入上一步顯示的代碼。", "enter_code_displayed_in_previous_step": "請輸入上一步顯示的代碼。",
"authorize": "授權", "authorize": "授權",
"federated_identities": "聯邦身分", "federated_client_credentials": "聯邦身分",
"federated_identities_description": "使用聯邦身分,您可以透過由第三方授權機構簽發的 JWT 權杖來驗證 OIDC 客戶端。", "federated_client_credentials_description": "使用聯邦身分,您可以透過由第三方授權機構簽發的 JWT 權杖來驗證 OIDC 客戶端。",
"add_federated_identity": "增加聯邦身分", "add_federated_client_credential": "增加聯邦身分",
"add_another_federated_identity": "新增另一組聯邦身分", "add_another_federated_client_credential": "新增另一組聯邦身分",
"oidc_allowed_group_count": "允許的群組數量", "oidc_allowed_group_count": "允許的群組數量",
"unrestricted": "未受限制", "unrestricted": "未受限制",
"show_advanced_options": "顯示進階選項", "show_advanced_options": "顯示進階選項",

View File

@@ -2,7 +2,9 @@
import DatePicker from '$lib/components/form/date-picker.svelte'; import DatePicker from '$lib/components/form/date-picker.svelte';
import { Input, type FormInputEvent } from '$lib/components/ui/input'; import { Input, type FormInputEvent } from '$lib/components/ui/input';
import { Label } from '$lib/components/ui/label'; import { Label } from '$lib/components/ui/label';
import { m } from '$lib/paraglide/messages';
import type { FormInput } from '$lib/utils/form-util'; import type { FormInput } from '$lib/utils/form-util';
import { LucideExternalLink } from '@lucide/svelte';
import type { Snippet } from 'svelte'; import type { Snippet } from 'svelte';
import type { HTMLAttributes } from 'svelte/elements'; import type { HTMLAttributes } from 'svelte/elements';
@@ -10,6 +12,7 @@
input = $bindable(), input = $bindable(),
label, label,
description, description,
docsLink,
placeholder, placeholder,
disabled = false, disabled = false,
type = 'text', type = 'text',
@@ -20,6 +23,7 @@
input?: FormInput<string | boolean | number | Date | undefined>; input?: FormInput<string | boolean | number | Date | undefined>;
label?: string; label?: string;
description?: string; description?: string;
docsLink?: string;
placeholder?: string; placeholder?: string;
disabled?: boolean; disabled?: boolean;
type?: 'text' | 'password' | 'email' | 'number' | 'checkbox' | 'date'; type?: 'text' | 'password' | 'email' | 'number' | 'checkbox' | 'date';
@@ -35,7 +39,19 @@
<Label class="mb-0" for={id}>{label}</Label> <Label class="mb-0" for={id}>{label}</Label>
{/if} {/if}
{#if description} {#if description}
<p class="text-muted-foreground mt-1 text-xs">{description}</p> <p class="text-muted-foreground mt-1 text-xs">
{description}
{#if docsLink}
<a
class="relative text-white after:absolute after:bottom-0 after:left-0 after:h-px after:w-full after:translate-y-[-1px] after:bg-white"
href={docsLink}
target="_blank"
>
{m.docs()}
<LucideExternalLink class="inline size-3 align-text-top" />
</a>
{/if}
</p>
{/if} {/if}
<div class={label || description ? 'mt-2' : ''}> <div class={label || description ? 'mt-2' : ''}>
{#if children} {#if children}

View File

@@ -51,7 +51,7 @@
} }
function getFieldError(index: number, field: keyof OidcClientFederatedIdentity): string | null { function getFieldError(index: number, field: keyof OidcClientFederatedIdentity): string | null {
console.log(federatedIdentities) console.log(federatedIdentities);
if (!errors) return null; if (!errors) return null;
const path = [index, field]; const path = [index, field];
return errors?.filter((e) => e.path[0] == path[0] && e.path[1] == path[1])[0]?.message; return errors?.filter((e) => e.path[0] == path[0] && e.path[1] == path[1])[0]?.message;
@@ -59,7 +59,11 @@
</script> </script>
<div {...restProps}> <div {...restProps}>
<FormInput label={m.federated_identities()} description={m.federated_identities_description()}> <FormInput
label={m.federated_client_credentials()}
description={m.federated_client_credentials_description()}
docsLink="https://pocket-id.org/docs/guides/oidc-client-authentication"
>
<div class="space-y-4"> <div class="space-y-4">
{#each federatedIdentities as identity, i} {#each federatedIdentities as identity, i}
<div class="space-y-3 rounded-lg border p-4"> <div class="space-y-3 rounded-lg border p-4">
@@ -142,7 +146,7 @@
<Button class="mt-3" variant="secondary" size="sm" onclick={addFederatedIdentity} type="button"> <Button class="mt-3" variant="secondary" size="sm" onclick={addFederatedIdentity} type="button">
<LucidePlus class="mr-1 size-4" /> <LucidePlus class="mr-1 size-4" />
{federatedIdentities.length === 0 {federatedIdentities.length === 0
? m.add_federated_identity() ? m.add_federated_client_credential()
: m.add_another_federated_identity()} : m.add_another_federated_client_credential()}
</Button> </Button>
</div> </div>