0
Fork 0
mirror of https://github.com/logto-io/logto.git synced 2025-04-07 23:01:25 -05:00

fix: fix SAML app console issues (#6970)

This commit is contained in:
Darcy Ye 2025-01-23 11:25:42 +08:00 committed by GitHub
parent 2633723861
commit f4ac74b49c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
19 changed files with 74 additions and 54 deletions

View file

@ -1,3 +1,3 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M17.5001 11.6667C17.2791 11.6667 17.0671 11.7545 16.9108 11.9108C16.7545 12.0671 16.6667 12.2791 16.6667 12.5001V15.8334C16.6667 16.0544 16.579 16.2664 16.4227 16.4227C16.2664 16.579 16.0544 16.6667 15.8334 16.6667H4.16675C3.94573 16.6667 3.73377 16.579 3.57749 16.4227C3.42121 16.2664 3.33341 16.0544 3.33341 15.8334V12.5001C3.33341 12.2791 3.24562 12.0671 3.08934 11.9108C2.93306 11.7545 2.7211 11.6667 2.50008 11.6667C2.27907 11.6667 2.06711 11.7545 1.91083 11.9108C1.75455 12.0671 1.66675 12.2791 1.66675 12.5001V15.8334C1.66675 16.4965 1.93014 17.1323 2.39898 17.6012C2.86782 18.07 3.50371 18.3334 4.16675 18.3334H15.8334C16.4965 18.3334 17.1323 18.07 17.6012 17.6012C18.07 17.1323 18.3334 16.4965 18.3334 15.8334V12.5001C18.3334 12.2791 18.2456 12.0671 18.0893 11.9108C17.9331 11.7545 17.7211 11.6667 17.5001 11.6667ZM9.40841 13.0917C9.48767 13.1676 9.58112 13.2271 9.68342 13.2667C9.78316 13.3108 9.89102 13.3336 10.0001 13.3336C10.1091 13.3336 10.217 13.3108 10.3167 13.2667C10.419 13.2271 10.5125 13.1676 10.5917 13.0917L13.9251 9.75842C14.082 9.6015 14.1702 9.38867 14.1702 9.16675C14.1702 8.94483 14.082 8.732 13.9251 8.57508C13.7682 8.41816 13.5553 8.33001 13.3334 8.33001C13.1115 8.33001 12.8987 8.41816 12.7417 8.57508L10.8334 10.4917V2.50008C10.8334 2.27907 10.7456 2.06711 10.5893 1.91083C10.4331 1.75455 10.2211 1.66675 10.0001 1.66675C9.77907 1.66675 9.56711 1.75455 9.41083 1.91083C9.25455 2.06711 9.16675 2.27907 9.16675 2.50008V10.4917L7.25842 8.57508C7.18072 8.49738 7.08847 8.43575 6.98696 8.3937C6.88544 8.35165 6.77663 8.33001 6.66675 8.33001C6.55687 8.33001 6.44806 8.35165 6.34654 8.3937C6.24502 8.43575 6.15278 8.49738 6.07508 8.57508C5.99738 8.65278 5.93575 8.74502 5.8937 8.84654C5.85165 8.94806 5.83001 9.05687 5.83001 9.16675C5.83001 9.27663 5.85165 9.38544 5.8937 9.48696C5.93575 9.58847 5.99738 9.68072 6.07508 9.75842L9.40841 13.0917Z" fill="#747778"/>
<path d="M17.5001 11.6667C17.2791 11.6667 17.0671 11.7545 16.9108 11.9108C16.7545 12.0671 16.6667 12.2791 16.6667 12.5001V15.8334C16.6667 16.0544 16.579 16.2664 16.4227 16.4227C16.2664 16.579 16.0544 16.6667 15.8334 16.6667H4.16675C3.94573 16.6667 3.73377 16.579 3.57749 16.4227C3.42121 16.2664 3.33341 16.0544 3.33341 15.8334V12.5001C3.33341 12.2791 3.24562 12.0671 3.08934 11.9108C2.93306 11.7545 2.7211 11.6667 2.50008 11.6667C2.27907 11.6667 2.06711 11.7545 1.91083 11.9108C1.75455 12.0671 1.66675 12.2791 1.66675 12.5001V15.8334C1.66675 16.4965 1.93014 17.1323 2.39898 17.6012C2.86782 18.07 3.50371 18.3334 4.16675 18.3334H15.8334C16.4965 18.3334 17.1323 18.07 17.6012 17.6012C18.07 17.1323 18.3334 16.4965 18.3334 15.8334V12.5001C18.3334 12.2791 18.2456 12.0671 18.0893 11.9108C17.9331 11.7545 17.7211 11.6667 17.5001 11.6667ZM9.40841 13.0917C9.48767 13.1676 9.58112 13.2271 9.68342 13.2667C9.78316 13.3108 9.89102 13.3336 10.0001 13.3336C10.1091 13.3336 10.217 13.3108 10.3167 13.2667C10.419 13.2271 10.5125 13.1676 10.5917 13.0917L13.9251 9.75842C14.082 9.6015 14.1702 9.38867 14.1702 9.16675C14.1702 8.94483 14.082 8.732 13.9251 8.57508C13.7682 8.41816 13.5553 8.33001 13.3334 8.33001C13.1115 8.33001 12.8987 8.41816 12.7417 8.57508L10.8334 10.4917V2.50008C10.8334 2.27907 10.7456 2.06711 10.5893 1.91083C10.4331 1.75455 10.2211 1.66675 10.0001 1.66675C9.77907 1.66675 9.56711 1.75455 9.41083 1.91083C9.25455 2.06711 9.16675 2.27907 9.16675 2.50008V10.4917L7.25842 8.57508C7.18072 8.49738 7.08847 8.43575 6.98696 8.3937C6.88544 8.35165 6.77663 8.33001 6.66675 8.33001C6.55687 8.33001 6.44806 8.35165 6.34654 8.3937C6.24502 8.43575 6.15278 8.49738 6.07508 8.57508C5.99738 8.65278 5.93575 8.74502 5.8937 8.84654C5.85165 8.94806 5.83001 9.05687 5.83001 9.16675C5.83001 9.27663 5.85165 9.38544 5.8937 9.48696C5.93575 9.58847 5.99738 9.68072 6.07508 9.75842L9.40841 13.0917Z" fill="currentColor"/>
</svg>

Before

Width:  |  Height:  |  Size: 2 KiB

After

Width:  |  Height:  |  Size: 2 KiB

View file

@ -4,9 +4,9 @@ import { useTranslation } from 'react-i18next';
import Delete from '@/assets/icons/delete.svg?react';
import Download from '@/assets/icons/download.svg?react';
import Deactivate from '@/assets/icons/moon.svg?react';
import Deactivate from '@/assets/icons/forbidden.svg?react';
import More from '@/assets/icons/more.svg?react';
import Activate from '@/assets/icons/sun.svg?react';
import Activate from '@/assets/icons/shield.svg?react';
import ActionMenu, { ActionMenuItem } from '@/ds-components/ActionMenu';
import { downloadText } from '@/utils/downloader';
@ -41,42 +41,38 @@ function CertificateActionMenu({
return (
<ActionMenu icon={<More className={styles.icon} />} title={t('general.more_options')}>
{active ? (
<ActionMenuItem
iconClassName={styles.icon}
icon={<Deactivate />}
onClick={() => {
<ActionMenuItem
iconClassName={styles.icon}
icon={active ? <Deactivate /> : <Activate />}
onClick={() => {
if (active) {
onDeactivate(id);
}}
>
{t('general.deactivate')}
</ActionMenuItem>
) : (
<>
{/* Can only delete inactive certificates */}
<ActionMenuItem
type="danger"
icon={<Delete />}
onClick={() => {
onDelete(id);
}}
>
{t('general.delete')}
</ActionMenuItem>
<ActionMenuItem
iconClassName={styles.icon}
icon={<Activate />}
onClick={() => {
onActivate(id);
}}
>
{t('general.activate')}
</ActionMenuItem>
</>
)}
<ActionMenuItem iconClassName={styles.icon} icon={<Download />} onClick={onDownload}>
} else {
onActivate(id);
}
}}
>
{t(`general.${active ? 'deactivate' : 'activate'}`)}
</ActionMenuItem>
<ActionMenuItem
iconClassName={styles.icon}
icon={<Download className={styles.icon} />}
onClick={onDownload}
>
{t('general.download')}
</ActionMenuItem>
{!active && (
// Can only delete inactive certificates.
<ActionMenuItem
type="danger"
icon={<Delete />}
onClick={() => {
onDelete(id);
}}
>
{t('general.delete')}
</ActionMenuItem>
)}
</ActionMenu>
);
}

View file

@ -208,18 +208,22 @@ function Settings({ data, mutateApplication, isDeleted }: Props) {
!value || uriValidator(value) || t('errors.invalid_uri_format'),
})}
error={Boolean(errors.acsUrl)}
placeholder={t('enterprise_sso.basic_info.saml.acs_url_field_name')}
placeholder={t('enterprise_sso.basic_info.saml.acs_url_field_placeholder')}
/>
</FormField>
<FormField isRequired title="enterprise_sso.basic_info.saml.audience_uri_field_name">
<FormField
isRequired
title="enterprise_sso.basic_info.saml.entity_id_field_name"
tip={t('enterprise_sso.basic_info.saml.entity_id_field_tooltip')}
>
<TextInput
{...register('entityId', {
required: t('errors.required_field_missing', {
field: t('enterprise_sso.basic_info.saml.audience_uri_field_name'),
field: t('enterprise_sso.basic_info.saml.entity_id_field_name'),
}),
})}
error={Boolean(errors.entityId)}
placeholder={t('enterprise_sso.basic_info.saml.audience_uri_field_name')}
placeholder={t('enterprise_sso.basic_info.saml.entity_id_field_placeholder')}
/>
</FormField>
</FormCard>

View file

@ -26,7 +26,8 @@ const enterprise_sso = {
'قم بإنشاء تكامل تطبيق جديد باستخدام SAML 2.0 في موفر الهوية {{name}} الخاص بك. ثم قم بلصق القيمة التالية فيه.',
saml: {
acs_url_field_name: 'عنوان URL لخدمة المستهلك للتأكيد (رد URL)',
audience_uri_field_name: 'معرف الجمهور (معرف SP)',
/** UNTRANSLATED */
audience_uri_field_name: 'Audience URI (SP Entity ID)',
},
oidc: {
redirect_uri_field_name: 'عنوان URL لإعادة التوجيه (عنوان URL للرد)',

View file

@ -27,7 +27,8 @@ const enterprise_sso = {
'Erstellen Sie eine neue Anwendungsintegration per SAML 2.0 in Ihrem {{name}}-Identitätsanbieter. Fügen Sie dann den folgenden Wert hinzu.',
saml: {
acs_url_field_name: 'Zieldienst-URL für Assertionsverbrauch (Antwort-URL)',
audience_uri_field_name: 'Ziel-URI (SP Entity ID)',
/** UNTRANSLATED */
audience_uri_field_name: 'Audience URI (SP Entity ID)',
},
oidc: {
redirect_uri_field_name: 'Weiterleitungs-URI (Callback-URL)',

View file

@ -28,6 +28,11 @@ const enterprise_sso = {
saml: {
acs_url_field_name: 'Assertion consumer service URL (Reply URL)',
audience_uri_field_name: 'Audience URI (SP Entity ID)',
entity_id_field_name: 'Service Provider (SP) Entity ID',
entity_id_field_tooltip:
'The SP Entity ID can be in any string format, typically using a URI form or a URL form as an identifier, but this is not mandatory.',
acs_url_field_placeholder: 'https://your-domain.com/api/saml/callback',
entity_id_field_placeholder: 'urn:your-domain.com:sp:saml:{serviceProviderId}',
},
oidc: {
redirect_uri_field_name: 'Redirect URI (Callback URL)',

View file

@ -28,7 +28,8 @@ const enterprise_sso = {
'Crea una nueva integración de aplicación mediante SAML 2.0 en tu proveedor de identidad {{name}}. Luego pega el siguiente valor en él.',
saml: {
acs_url_field_name: 'URL de servicio de consumidor de aserciones (URL de respuesta)',
audience_uri_field_name: 'URI del público (ID del SP entidad)',
/** UNTRANSLATED */
audience_uri_field_name: 'Audience URI (SP Entity ID)',
},
oidc: {
redirect_uri_field_name: 'URI de redireccionamiento (URL de devolución de llamada)',

View file

@ -27,7 +27,8 @@ const enterprise_sso = {
"Créez une nouvelle intégration d'application par SAML 2.0 dans votre fournisseur d'identité {{name}}. Ensuite, collez la valeur suivante.",
saml: {
acs_url_field_name: "URL de service de consommation d'assertions (URL de réponse)",
audience_uri_field_name: "URI de l'audience (ID de l'entité SP)",
/** UNTRANSLATED */
audience_uri_field_name: 'Audience URI (SP Entity ID)',
},
oidc: {
redirect_uri_field_name: 'URI de redirection (URL de rappel)',

View file

@ -27,7 +27,8 @@ const enterprise_sso = {
"Crea una nuova integrazione dell'applicazione tramite SAML 2.0 nel tuo provider di identità {{name}}. Quindi incolla il valore seguente.",
saml: {
acs_url_field_name: 'URL del servizio consumer di asserzioni (URL di risposta)',
audience_uri_field_name: "URI dell'audience (ID entità SP)",
/** UNTRANSLATED */
audience_uri_field_name: 'Audience URI (SP Entity ID)',
},
oidc: {
redirect_uri_field_name: 'URI di reindirizzamento (URL di callback)',

View file

@ -27,7 +27,8 @@ const enterprise_sso = {
'IdPにてSAML 2.0の新しいアプリケーション連携を作成します。次に以下の値を貼り付けます。',
saml: {
acs_url_field_name: 'アサーションコンシューマサービスURL応答URL',
audience_uri_field_name: 'オーディエンスURISPエンティティID',
/** UNTRANSLATED */
audience_uri_field_name: 'Audience URI (SP Entity ID)',
},
oidc: {
redirect_uri_field_name: 'リダイレクトURIコールバックURL',

View file

@ -26,7 +26,8 @@ const enterprise_sso = {
'SAML 2.0을 사용하여 {{name}} 신원 공급자에서 새로운 응용 프로그램 통합을 만듭니다. 그런 다음 다음 값을 붙여 넣습니다.',
saml: {
acs_url_field_name: '단언 소비자 서비스 URL (응답 URL)',
audience_uri_field_name: '대상 URI (SP 엔터티 ID)',
/** UNTRANSLATED */
audience_uri_field_name: 'Audience URI (SP Entity ID)',
},
oidc: {
redirect_uri_field_name: '리디렉션 URI (콜백 URL)',

View file

@ -27,7 +27,8 @@ const enterprise_sso = {
'Utwórz nową integrację aplikacji za pomocą SAML 2.0 w dostawcy tożsamości {{name}}. Następnie wklej poniższą wartość.',
saml: {
acs_url_field_name: 'Adres URL usługi konsumenta twierdzeń (Adres URL odpowiedzi)',
audience_uri_field_name: 'URI odbiorcy (ID podmiotu SP)',
/** UNTRANSLATED */
audience_uri_field_name: 'Audience URI (SP Entity ID)',
},
oidc: {
redirect_uri_field_name: 'Adres URL przekierowania (Adres URL wywołania zwrotnego)',

View file

@ -28,7 +28,8 @@ const enterprise_sso = {
'Crie uma nova integração de aplicativo por SAML 2.0 em seu provedor de identidade {{name}}. Em seguida, cole o seguinte valor nele.',
saml: {
acs_url_field_name: 'URL do serviço de consumidor de afirmações (URL de resposta)',
audience_uri_field_name: 'URI da audiência (ID da Entidade do SP)',
/** UNTRANSLATED */
audience_uri_field_name: 'Audience URI (SP Entity ID)',
},
oidc: {
redirect_uri_field_name: 'URL de redirecionamento (URL de retorno de chamada)',

View file

@ -27,7 +27,8 @@ const enterprise_sso = {
'Crie uma nova integração de aplicativo usando SAML 2.0 no seu provedor de identidade {{name}}. Em seguida, cole o seguinte valor nele.',
saml: {
acs_url_field_name: 'URL do serviço de consumo de afirmação (URL de resposta)',
audience_uri_field_name: 'URI do público (ID da entidade do SP)',
/** UNTRANSLATED */
audience_uri_field_name: 'Audience URI (SP Entity ID)',
},
oidc: {
redirect_uri_field_name: 'URI de redirecionamento (URL de retorno)',

View file

@ -27,7 +27,8 @@ const enterprise_sso = {
'Создайте новую интеграцию приложения с помощью SAML 2.0 в вашем провайдере идентичности {{name}}. Затем вставьте следующее значение в него.',
saml: {
acs_url_field_name: 'URL потребителя утверждений (URL ответа)',
audience_uri_field_name: 'Адрес аудиенции (SP Entity ID)',
/** UNTRANSLATED */
audience_uri_field_name: 'Audience URI (SP Entity ID)',
},
oidc: {
redirect_uri_field_name: 'URI перенаправления (URL обратного вызова)',

View file

@ -27,6 +27,7 @@ const enterprise_sso = {
'Yeni bir uygulama entegrasyonu oluşturun, {{name}} kimlik sağlayıcınızda SAML 2.0 ile. Ardından aşağıdaki değeri yapıştırın.',
saml: {
acs_url_field_name: 'Assertion consumer service URL (Reply URL)',
/** UNTRANSLATED */
audience_uri_field_name: 'Audience URI (SP Entity ID)',
},
oidc: {

View file

@ -25,7 +25,8 @@ const enterprise_sso = {
description: '在{{name}}身份提供者中通过SAML 2.0创建一个新的应用集成。然后将以下值粘贴到其中。',
saml: {
acs_url_field_name: '断言消费者服务URL回复URL',
audience_uri_field_name: '受众URISP实体ID',
/** UNTRANSLATED */
audience_uri_field_name: 'Audience URI (SP Entity ID)',
},
oidc: {
redirect_uri_field_name: '重定向URI回调URL',

View file

@ -25,7 +25,8 @@ const enterprise_sso = {
description: '在您的{{name}}身份提供者中通過 SAML 2.0 創建新應用集成。然後將以下值貼到其中。',
saml: {
acs_url_field_name: '斷言消費服務 URL (回複 URL)',
audience_uri_field_name: '受眾 URI (SP 實體 ID)',
/** UNTRANSLATED */
audience_uri_field_name: 'Audience URI (SP Entity ID)',
},
oidc: {
redirect_uri_field_name: '重定向 URI回調 URL',

View file

@ -26,7 +26,8 @@ const enterprise_sso = {
'在您的 {{name}} 身份提供者中使用 SAML 2.0 建立新的應用集成。然後將以下值粘貼到其中。',
saml: {
acs_url_field_name: '斷言消費服務 URL回覆 URL',
audience_uri_field_name: '受眾 URISP 實體 ID',
/** UNTRANSLATED */
audience_uri_field_name: 'Audience URI (SP Entity ID)',
},
oidc: {
redirect_uri_field_name: '重定向 URI回撥 URL',