Skip to content

Commit 842bcd9

Browse files
authored
refactor(console): update tips for connector redirect uris (#7815)
1 parent a6c6d50 commit 842bcd9

File tree

36 files changed

+198
-37
lines changed

36 files changed

+198
-37
lines changed

packages/console/src/components/ConnectorForm/ConfigForm/index.tsx

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,17 @@ import { ConnectorType } from '@logto/connector-kit';
33
import { appendPath, conditional } from '@silverhand/essentials';
44
import { useContext } from 'react';
55
import { Controller, useFormContext } from 'react-hook-form';
6-
import { useTranslation } from 'react-i18next';
6+
import { Trans, useTranslation } from 'react-i18next';
77

8+
import { isCloud } from '@/consts/env';
9+
import { customDomainFeatureLink } from '@/consts/external-links';
810
import { AppDataContext } from '@/contexts/AppDataProvider';
911
import CodeEditor from '@/ds-components/CodeEditor';
1012
import CopyToClipboard from '@/ds-components/CopyToClipboard';
1113
import FormField from '@/ds-components/FormField';
14+
import TextLink from '@/ds-components/TextLink';
1215
import useAvailableDomains from '@/hooks/use-available-domains';
16+
import useDocumentationUrl from '@/hooks/use-documentation-url';
1317
import type { ConnectorFormType } from '@/types/connector';
1418
import { applyDomain } from '@/utils/url';
1519
import { jsonValidator } from '@/utils/validator';
@@ -46,13 +50,38 @@ function ConfigForm({
4650
const isSamlConnector = connectorFactoryId === 'saml';
4751
// This is an auto-generated URL serve as the connector's internal property and should be configured on the identity provider side.
4852
const displayUrl = isSamlConnector ? acsUrl : callbackUri;
53+
const { getDocumentationUrl } = useDocumentationUrl();
4954

5055
return (
5156
<div className={className}>
5257
{connectorType === ConnectorType.Social && displayUrl && (
5358
<FormField
5459
title={isSamlConnector ? 'connectors.guide.acs_url' : 'connectors.guide.callback_uri'}
55-
tip={conditional(!isSamlConnector && t('connectors.guide.callback_uri_description'))}
60+
tip={conditional(
61+
!isSamlConnector &&
62+
((closeTipHandler) => (
63+
<>
64+
<p>{t('connectors.guide.callback_uri_description')}</p>
65+
{isCloud && (
66+
<p>
67+
<Trans
68+
components={{
69+
a: (
70+
<TextLink
71+
href={getDocumentationUrl(customDomainFeatureLink)}
72+
targetBlank="noopener"
73+
onClick={closeTipHandler}
74+
/>
75+
),
76+
}}
77+
>
78+
{t('connectors.guide.callback_uri_custom_domain_description')}
79+
</Trans>
80+
</p>
81+
)}
82+
</>
83+
))
84+
)}
5685
>
5786
<div className={styles.callbackUriContent}>
5887
{availableDomains.map((domain) => (

packages/console/src/pages/EnterpriseSsoDetails/Connection/ServiceProviderInfo/OidcConnectorSpInfo.tsx

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
import { useContext } from 'react';
2+
import { Trans, useTranslation } from 'react-i18next';
23

4+
import { isCloud } from '@/consts/env';
35
import { AppDataContext } from '@/contexts/AppDataProvider';
46
import CopyToClipboard from '@/ds-components/CopyToClipboard';
57
import FormField from '@/ds-components/FormField';
8+
import TextLink from '@/ds-components/TextLink';
69
import useAvailableDomains from '@/hooks/use-available-domains';
710
import { applyDomain } from '@/utils/url';
811

@@ -12,12 +15,39 @@ type Props = {
1215
readonly ssoConnectorId: string;
1316
};
1417

18+
const customDomainSettingsLink = 'https://cloud.logto.io/to/tenant-settings/domains';
19+
1520
function OidcConnectorSpInfo({ ssoConnectorId }: Props) {
21+
const { t } = useTranslation(undefined, { keyPrefix: 'admin_console' });
1622
const { tenantEndpoint } = useContext(AppDataContext);
1723
const availableDomains = useAvailableDomains();
1824

1925
return (
20-
<FormField title="enterprise_sso.basic_info.oidc.redirect_uri_field_name">
26+
<FormField
27+
title="enterprise_sso.basic_info.oidc.redirect_uri_field_name"
28+
tip={(closeTipHandler) => (
29+
<>
30+
<p>{t('enterprise_sso.basic_info.oidc.redirect_uri_field_description')}</p>
31+
{isCloud && (
32+
<p>
33+
<Trans
34+
components={{
35+
a: (
36+
<TextLink
37+
href={customDomainSettingsLink}
38+
targetBlank="noopener"
39+
onClick={closeTipHandler}
40+
/>
41+
),
42+
}}
43+
>
44+
{t('enterprise_sso.basic_info.oidc.redirect_uri_field_custom_domain_description')}
45+
</Trans>
46+
</p>
47+
)}
48+
</>
49+
)}
50+
>
2151
{/* Generated and passed in by Admin console. */}
2252
<div className={styles.uriContent}>
2353
{availableDomains.map((domain) => (

packages/phrases/src/locales/ar/translation/admin-console/connectors.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,11 @@ const connectors = {
6363
description:
6464
'تخزين رموز الوصول والتحديث في المخزن السري. يتيح مكالمات API تلقائية دون موافقة المستخدم المتكررة. مثال: دع وكيل الذكاء الاصطناعي الخاص بك يضيف أحداثًا إلى تقويم Google بتفويض دائم. <a>تعلم كيفية استدعاء واجهات برمجة التطبيقات للطرف الثالث</a>',
6565
},
66-
callback_uri: 'عنوان URI للرد',
66+
callback_uri: 'عنوان URI لإعادة التوجيه (عنوان URI للرد)',
6767
callback_uri_description:
68-
'يُطلق عليه أيضًا اسم عنوان URI للتوجيه ، وهو عنوان URI في Logto الذي سيتم إرسال المستخدمين إليه بعد المصادقة الاجتماعية ، قم بنسخه ولصقه في صفحة تكوين مزود الخدمة الاجتماعية.',
68+
'عنوان URI لإعادة التوجيه هو الوجهة التي يُعاد توجيه المستخدمين إليها بعد التفويض عبر وسائل التواصل الاجتماعي. أضف هذا العنوان إلى إعدادات موفر الهوية (IdP) الخاص بك.',
69+
callback_uri_custom_domain_description:
70+
'إذا كنت تستخدم عدة <a>نطاقات مخصصة</a> في Logto، فتأكد من إضافة جميع عناوين URI لرد الاتصال المقابلة إلى موفر الهوية لديك لضمان عمل تسجيل الدخول الاجتماعي عبر كل نطاق.\n\nيظل نطاق Logto الافتراضي (*.logto.app) صالحًا دائمًا؛ قم بتضمينه فقط إذا كنت ترغب أيضًا في دعم تسجيلات الدخول تحت ذلك النطاق.',
6971
acs_url: 'عنوان URL لخدمة استهلاك الادعاء',
7072
},
7173
platform: {

packages/phrases/src/locales/ar/translation/admin-console/enterprise-sso.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ const enterprise_sso = {
3535
},
3636
oidc: {
3737
redirect_uri_field_name: 'عنوان URL لإعادة التوجيه (عنوان URL للرد)',
38+
redirect_uri_field_description:
39+
'عنوان URI لإعادة التوجيه هو الوجهة التي يُعاد توجيه المستخدمين إليها بعد مصادقة SSO. أضف هذا العنوان إلى إعدادات موفر الهوية (IdP) الخاص بك.',
40+
redirect_uri_field_custom_domain_description:
41+
'إذا كنت تستخدم عدة <a>نطاقات مخصصة</a> في Logto، فتأكد من إضافة جميع عناوين URI لرد الاتصال المقابلة إلى موفر الهوية لديك لضمان عمل تسجيل الدخول الأحادي (SSO) عبر كل نطاق.\n\nيظل نطاق Logto الافتراضي (*.logto.app) صالحًا دائمًا؛ قم بتضمينه فقط إذا كنت ترغب أيضًا في دعم SSO ضمن ذلك النطاق.',
3842
},
3943
},
4044
attribute_mapping: {

packages/phrases/src/locales/de/translation/admin-console/connectors.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,11 @@ const connectors = {
6464
description:
6565
'Speichern Sie Zugriffs- und Auffrischungstokens im Secret Vault. Ermöglicht automatisierte API-Aufrufe ohne wiederholte Zustimmung der Benutzer. Beispiel: Lassen Sie Ihren AI-Agenten Ereignisse mit dauerhafter Genehmigung zu Google Kalender hinzufügen. <a>Erfahren Sie, wie man Drittanbieter-APIs aufruft</a>',
6666
},
67-
callback_uri: 'Callback-URI',
67+
callback_uri: 'Redirect-URI (Callback-URI)',
6868
callback_uri_description:
69-
'Auch als Redirect-URI bezeichnet, ist die URI in Logto, zu der Benutzer nach der Social-Autorisierung zurückgesendet werden. Kopieren und fügen Sie sie in die Konfigurationsseite des Social Providers ein.',
69+
'Die Redirect-URI ist die Adresse, zu der Benutzer nach der Social-Autorisierung zurückgeleitet werden. Fügen Sie diese URI zur Konfiguration Ihres IdP hinzu.',
70+
callback_uri_custom_domain_description:
71+
'Wenn Sie in Logto mehrere <a>benutzerdefinierte Domains</a> verwenden, fügen Sie alle entsprechenden Callback-URIs zu Ihrem IdP hinzu, damit Social Login in jeder Domain funktioniert.\n\nDie standardmäßige Logto-Domain (*.logto.app) ist immer gültig - fügen Sie sie nur hinzu, wenn Sie auch Anmeldungen unter dieser Domain unterstützen möchten.',
7072
acs_url: 'Assertion Consumer Service URL',
7173
},
7274
platform: {

packages/phrases/src/locales/de/translation/admin-console/enterprise-sso.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ const enterprise_sso = {
3535
},
3636
oidc: {
3737
redirect_uri_field_name: 'Weiterleitungs-URI (Callback-URL)',
38+
redirect_uri_field_description:
39+
'Die Redirect-URI ist die Adresse, zu der Benutzer nach der SSO-Authentifizierung zurückgeleitet werden. Fügen Sie diese URI zur Konfiguration Ihres IdP hinzu.',
40+
redirect_uri_field_custom_domain_description:
41+
'Wenn Sie in Logto mehrere <a>benutzerdefinierte Domains</a> verwenden, fügen Sie alle entsprechenden Callback-URIs zu Ihrem IdP hinzu, damit SSO in jeder Domain funktioniert.\n\nDie standardmäßige Logto-Domain (*.logto.app) ist immer gültig – fügen Sie sie nur hinzu, wenn Sie auch SSO unter dieser Domain unterstützen möchten.',
3842
},
3943
},
4044
attribute_mapping: {

packages/phrases/src/locales/en/translation/admin-console/connectors.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,11 @@ const connectors = {
6363
description:
6464
'Store access and refresh tokens in the Secret Vault. Allows automated API calls without repeated user consent. Example: let your AI Agent add events to Google Calendar with persistent authorization. <a>Learn how to call third-party APIs</a>',
6565
},
66-
callback_uri: 'Callback URI',
66+
callback_uri: 'Redirect URI (Callback URI)',
6767
callback_uri_description:
68-
"Also called redirect URI, is the URI in Logto where users will be sent back after social authorization, copy and paste to the social provider's config page.",
68+
"Redirect URI is where users are redirected after social authorization. Add this URI to your IdP's configuration.",
69+
callback_uri_custom_domain_description:
70+
'If you use multiple <a>custom domains</a> in Logto, be sure to add all corresponding callback URIs to your IdP to make social login work across every domain.\n\nThe default Logto domain (*.logto.app) is always valid — include it only if you also wish to support logins under that domain.',
6971
acs_url: 'Assertion consumer service URL',
7072
},
7173
platform: {

packages/phrases/src/locales/en/translation/admin-console/enterprise-sso.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ const enterprise_sso = {
3636
},
3737
oidc: {
3838
redirect_uri_field_name: 'Redirect URI (Callback URL)',
39+
redirect_uri_field_description:
40+
"Redirect URI is where users are redirected after SSO authentication. Add this URI to your IdP's configuration.",
41+
redirect_uri_field_custom_domain_description:
42+
'If you use multiple <a>custom domains</a> in Logto, be sure to add all corresponding callback URIs to your IdP to make SSO work across every domain.\n\nThe default Logto domain (*.logto.app) is always valid — include it only if you also wish to support SSO under that domain.',
3943
},
4044
},
4145
attribute_mapping: {

packages/phrases/src/locales/es/translation/admin-console/connectors.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,11 @@ const connectors = {
6464
description:
6565
'Almacene tokens de acceso y actualización en el Secret Vault. Permite llamadas API automatizadas sin un consentimiento repetido del usuario. Ejemplo: permite que tu agente de IA agregue eventos a Google Calendar con autorización persistente. <a>Aprende a llamar a APIs de terceros</a>',
6666
},
67-
callback_uri: 'URI de devolución de llamada',
67+
callback_uri: 'URI de redirección (URI de devolución de llamada)',
6868
callback_uri_description:
69-
'También llamado URI de redireccionamiento, es la URI en Logto a la que se enviarán los usuarios después de la autorización social, copie y pegue en la página de configuración del proveedor social.',
69+
'La URI de redirección es donde se redirige a los usuarios tras la autorización social. Añade esta URI a la configuración de tu IdP.',
70+
callback_uri_custom_domain_description:
71+
'Si usas varios <a>dominios personalizados</a> en Logto, asegúrate de añadir todas las URI de callback correspondientes a tu IdP para que el inicio de sesión social funcione en cada dominio.\n\nEl dominio predeterminado de Logto (*.logto.app) siempre es válido; inclúyelo solo si también deseas admitir inicios de sesión bajo ese dominio.',
7072
acs_url: 'URL del servicio de consumo de afirmaciones',
7173
},
7274
platform: {

packages/phrases/src/locales/es/translation/admin-console/enterprise-sso.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ const enterprise_sso = {
3636
},
3737
oidc: {
3838
redirect_uri_field_name: 'URI de redireccionamiento (URL de devolución de llamada)',
39+
redirect_uri_field_description:
40+
'La URI de redirección es donde se redirige a los usuarios tras la autenticación SSO. Añade esta URI a la configuración de tu IdP.',
41+
redirect_uri_field_custom_domain_description:
42+
'Si usas varios <a>dominios personalizados</a> en Logto, asegúrate de añadir todas las URI de callback correspondientes a tu IdP para que el SSO funcione en cada dominio.\n\nEl dominio predeterminado de Logto (*.logto.app) siempre es válido; inclúyelo solo si también deseas admitir SSO bajo ese dominio.',
3943
},
4044
},
4145
attribute_mapping: {

0 commit comments

Comments
 (0)