mirror of
https://github.com/logto-io/logto.git
synced 2025-04-07 23:01:25 -05:00
refactor(console): refactor app details page to support protected apps (#5252)
This commit is contained in:
parent
982c2c9179
commit
cc8b9d88e3
24 changed files with 949 additions and 39 deletions
packages
console/src
ds-components/FormField
pages
ApplicationDetails/ApplicationDetailsContent
GetStarted/ProtectedAppCreationForm
phrases/src/locales
de/translation/admin-console
en/translation/admin-console
es/translation/admin-console
fr/translation/admin-console
it/translation/admin-console
ja/translation/admin-console
ko/translation/admin-console
pl-pl/translation/admin-console
pt-br/translation/admin-console
pt-pt/translation/admin-console
ru/translation/admin-console
tr-tr/translation/admin-console
zh-cn/translation/admin-console
zh-hk/translation/admin-console
zh-tw/translation/admin-console
|
@ -40,4 +40,9 @@
|
|||
font: var(--font-body-2);
|
||||
color: var(--color-text-secondary);
|
||||
margin-top: _.unit(1);
|
||||
|
||||
&.top {
|
||||
margin-top: 0;
|
||||
margin-bottom: _.unit(1);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -67,7 +67,9 @@ function FormField({
|
|||
{isRequired && <div className={styles.required}>{t('general.required')}</div>}
|
||||
</div>
|
||||
{description && descriptionPosition === 'top' && (
|
||||
<div className={styles.description}>{descriptionPosition}</div>
|
||||
<div className={classNames(styles.description, styles.top)}>
|
||||
{typeof description === 'string' ? <DynamicT forKey={description} /> : description}
|
||||
</div>
|
||||
)}
|
||||
{children}
|
||||
{description && descriptionPosition === 'bottom' && (
|
||||
|
|
|
@ -0,0 +1,48 @@
|
|||
@use '@/scss/underscore' as _;
|
||||
|
||||
.launcher {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: _.unit(3) _.unit(4);
|
||||
background: var(--color-success-container);
|
||||
border: 1px solid var(--color-on-success-container);
|
||||
border-radius: 8px;
|
||||
font: var(--font-body-2);
|
||||
gap: _.unit(4);
|
||||
|
||||
span {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
.button {
|
||||
background: var(--color-on-success-container);
|
||||
color: var(--color-static-white);
|
||||
border: none;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.routes {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: _.unit(3) _.unit(6);
|
||||
}
|
||||
|
||||
.sessionDuration {
|
||||
width: 135px;
|
||||
|
||||
input {
|
||||
width: 86px;
|
||||
flex: unset;
|
||||
}
|
||||
}
|
||||
|
||||
.tip {
|
||||
white-space: pre-wrap;
|
||||
|
||||
ol {
|
||||
margin: 0;
|
||||
padding-inline-start: _.unit(5);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,165 @@
|
|||
import { type Application } from '@logto/schemas';
|
||||
import { type ChangeEvent } from 'react';
|
||||
import { Controller, useFieldArray, useFormContext } from 'react-hook-form';
|
||||
import { Trans, useTranslation } from 'react-i18next';
|
||||
|
||||
import ExternalLinkIcon from '@/assets/icons/external-link.svg';
|
||||
import FormCard from '@/components/FormCard';
|
||||
import Button from '@/ds-components/Button';
|
||||
import CopyToClipboard from '@/ds-components/CopyToClipboard';
|
||||
import FormField from '@/ds-components/FormField';
|
||||
import TextInput from '@/ds-components/TextInput';
|
||||
import NumericInput from '@/ds-components/TextInput/NumericInput';
|
||||
import useDocumentationUrl from '@/hooks/use-documentation-url';
|
||||
|
||||
import { type ApplicationForm } from '../utils';
|
||||
|
||||
import * as styles from './index.module.scss';
|
||||
|
||||
type Props = {
|
||||
data: Application;
|
||||
};
|
||||
|
||||
const routes = Object.freeze(['/register', '/sign-in', '/sign-in-callback', '/sign-out']);
|
||||
const maxSessionDuration = 365; // 1 year
|
||||
|
||||
function ProtectedAppSettings({ data }: Props) {
|
||||
const { t } = useTranslation(undefined, { keyPrefix: 'admin_console' });
|
||||
const { getDocumentationUrl } = useDocumentationUrl();
|
||||
|
||||
const {
|
||||
control,
|
||||
register,
|
||||
formState: { errors },
|
||||
} = useFormContext<ApplicationForm>();
|
||||
|
||||
const { fields } = useFieldArray({
|
||||
control,
|
||||
name: 'protectedAppMetadata.pageRules',
|
||||
});
|
||||
|
||||
const host = data.protectedAppMetadata?.host;
|
||||
|
||||
return (
|
||||
<>
|
||||
<FormCard
|
||||
title="application_details.integration"
|
||||
description="application_details.integration_description"
|
||||
learnMoreLink={{
|
||||
href: getDocumentationUrl('/docs/references/applications'),
|
||||
targetBlank: 'noopener',
|
||||
}}
|
||||
>
|
||||
{!!host && (
|
||||
<div className={styles.launcher}>
|
||||
<span>{t('protected_app.success_message')}</span>
|
||||
<Button
|
||||
className={styles.button}
|
||||
size="small"
|
||||
title="application_details.try_it"
|
||||
trailingIcon={<ExternalLinkIcon />}
|
||||
onClick={() => {
|
||||
window.open(`https://${host}`, '_blank');
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
<FormField isRequired title="application_details.application_name">
|
||||
<TextInput
|
||||
{...register('name', { required: true })}
|
||||
error={Boolean(errors.name)}
|
||||
placeholder={t('application_details.application_name_placeholder')}
|
||||
/>
|
||||
</FormField>
|
||||
<FormField
|
||||
isRequired
|
||||
title="protected_app.form.url_field_label"
|
||||
tip={<span className={styles.tip}>{t('application_details.origin_url_tip')}</span>}
|
||||
>
|
||||
<TextInput
|
||||
{...register('protectedAppMetadata.origin', { required: true })}
|
||||
error={Boolean(errors.protectedAppMetadata?.origin)}
|
||||
placeholder={t('protected_app.form.url_field_placeholder')}
|
||||
/>
|
||||
</FormField>
|
||||
<FormField
|
||||
title="application_details.custom_rules"
|
||||
description="application_details.custom_rules_description"
|
||||
descriptionPosition="top"
|
||||
tip={
|
||||
<span className={styles.tip}>
|
||||
<Trans components={{ ol: <ol />, li: <li /> }}>
|
||||
{t('application_details.custom_rules_tip')}
|
||||
</Trans>
|
||||
</span>
|
||||
}
|
||||
>
|
||||
{fields.map((field, index) => (
|
||||
<TextInput
|
||||
key={field.id}
|
||||
{...register(`protectedAppMetadata.pageRules.${index}.path`)}
|
||||
error={Boolean(errors.protectedAppMetadata?.pageRules?.[index]?.path)}
|
||||
placeholder={t('application_details.custom_rules_placeholder')}
|
||||
/>
|
||||
))}
|
||||
</FormField>
|
||||
</FormCard>
|
||||
<FormCard
|
||||
title="application_details.service_configuration"
|
||||
description="application_details.service_configuration_description"
|
||||
>
|
||||
<FormField
|
||||
title="application_details.authentication_routes"
|
||||
description="application_details.authentication_routes_description"
|
||||
descriptionPosition="top"
|
||||
>
|
||||
<div className={styles.routes}>
|
||||
{routes.map((route) => (
|
||||
<CopyToClipboard key={route} variant="border" value={route} />
|
||||
))}
|
||||
</div>
|
||||
</FormField>
|
||||
</FormCard>
|
||||
<FormCard title="application_details.session">
|
||||
<FormField title="application_details.session_duration">
|
||||
<Controller
|
||||
name="protectedAppMetadata.sessionDuration"
|
||||
control={control}
|
||||
rules={{
|
||||
min: 1,
|
||||
}}
|
||||
render={({ field: { onChange, value, name } }) => (
|
||||
<NumericInput
|
||||
className={styles.sessionDuration}
|
||||
name={name}
|
||||
placeholder="14"
|
||||
value={String(value)}
|
||||
min={1}
|
||||
max={maxSessionDuration}
|
||||
error={Boolean(errors.protectedAppMetadata?.sessionDuration)}
|
||||
onChange={({ target: { value } }: ChangeEvent<HTMLInputElement>) => {
|
||||
onChange(value && Number(value));
|
||||
}}
|
||||
onValueUp={() => {
|
||||
onChange(value + 1);
|
||||
}}
|
||||
onValueDown={() => {
|
||||
onChange(value - 1);
|
||||
}}
|
||||
onBlur={() => {
|
||||
if (value < 1) {
|
||||
onChange(1);
|
||||
} else if (value > maxSessionDuration) {
|
||||
onChange(maxSessionDuration);
|
||||
}
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
/>
|
||||
</FormField>
|
||||
</FormCard>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
export default ProtectedAppSettings;
|
|
@ -17,6 +17,8 @@ import TextInput from '@/ds-components/TextInput';
|
|||
import TextLink from '@/ds-components/TextLink';
|
||||
import useDocumentationUrl from '@/hooks/use-documentation-url';
|
||||
|
||||
import ProtectedAppSettings from './ProtectedAppSettings';
|
||||
|
||||
type Props = {
|
||||
data: Application;
|
||||
};
|
||||
|
@ -33,6 +35,7 @@ function Settings({ data }: Props) {
|
|||
const { type: applicationType, isThirdParty } = data;
|
||||
|
||||
const isNativeApp = applicationType === ApplicationType.Native;
|
||||
const isProtectedApp = applicationType === ApplicationType.Protected;
|
||||
const uriPatternRules: MultiTextInputRule = {
|
||||
pattern: {
|
||||
verify: (value) => !value || validateRedirectUrl(value, isNativeApp ? 'mobile' : 'web'),
|
||||
|
@ -40,6 +43,10 @@ function Settings({ data }: Props) {
|
|||
},
|
||||
};
|
||||
|
||||
if (isProtectedApp) {
|
||||
return <ProtectedAppSettings data={data} />;
|
||||
}
|
||||
|
||||
return (
|
||||
<FormCard
|
||||
title="application_details.settings"
|
||||
|
|
|
@ -73,7 +73,7 @@ function ApplicationDetailsContent({ data, oidcConfig, onApplicationUpdated }: P
|
|||
|
||||
await api
|
||||
.patch(`api/applications/${data.id}`, {
|
||||
json: applicationFormDataParser.toUpdateApplicationData(formData),
|
||||
json: applicationFormDataParser.toRequestPayload(formData),
|
||||
})
|
||||
.json<Application>();
|
||||
reset(formData);
|
||||
|
@ -185,8 +185,12 @@ function ApplicationDetailsContent({ data, oidcConfig, onApplicationUpdated }: P
|
|||
onSubmit={onSubmit}
|
||||
>
|
||||
<Settings data={data} />
|
||||
<EndpointsAndCredentials app={data} oidcConfig={oidcConfig} />
|
||||
{data.type !== ApplicationType.MachineToMachine && <RefreshTokenSettings data={data} />}
|
||||
{data.type !== ApplicationType.Protected && (
|
||||
<EndpointsAndCredentials app={data} oidcConfig={oidcConfig} />
|
||||
)}
|
||||
{![ApplicationType.MachineToMachine, ApplicationType.Protected].includes(data.type) && (
|
||||
<RefreshTokenSettings data={data} />
|
||||
)}
|
||||
</DetailsForm>
|
||||
</FormProvider>
|
||||
</TabWrapper>
|
||||
|
|
|
@ -1,51 +1,98 @@
|
|||
import {
|
||||
customClientMetadataDefault,
|
||||
type ApplicationResponse,
|
||||
type Application,
|
||||
} from '@logto/schemas';
|
||||
import { customClientMetadataDefault, type ApplicationResponse } from '@logto/schemas';
|
||||
import { type DeepPartial, cond } from '@silverhand/essentials';
|
||||
|
||||
export type ApplicationForm = Pick<
|
||||
ApplicationResponse,
|
||||
'name' | 'description' | 'oidcClientMetadata' | 'customClientMetadata' | 'isAdmin'
|
||||
>;
|
||||
type ProtectedAppMetadataType = ApplicationResponse['protectedAppMetadata'];
|
||||
|
||||
export type ApplicationForm = {
|
||||
name: ApplicationResponse['name'];
|
||||
description?: ApplicationResponse['description'];
|
||||
oidcClientMetadata?: ApplicationResponse['oidcClientMetadata'];
|
||||
customClientMetadata?: ApplicationResponse['customClientMetadata'];
|
||||
isAdmin?: ApplicationResponse['isAdmin'];
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
||||
protectedAppMetadata?: Omit<Exclude<ProtectedAppMetadataType, null>, 'customDomains'>;
|
||||
};
|
||||
|
||||
const mapToUriFormatArrays = (value?: string[]) =>
|
||||
value?.filter(Boolean).map((uri) => decodeURIComponent(uri)) ?? [];
|
||||
value?.filter(Boolean).map((uri) => decodeURIComponent(uri));
|
||||
|
||||
const mapToUriOriginFormatArrays = (value?: string[]) =>
|
||||
value?.filter(Boolean).map((uri) => decodeURIComponent(uri.replace(/\/*$/, ''))) ?? [];
|
||||
value?.filter(Boolean).map((uri) => decodeURIComponent(uri.replace(/\/*$/, '')));
|
||||
|
||||
export const applicationFormDataParser = {
|
||||
fromResponse: (data: ApplicationResponse): ApplicationForm => {
|
||||
const { name, description, oidcClientMetadata, customClientMetadata, isAdmin } = data;
|
||||
|
||||
return {
|
||||
const {
|
||||
name,
|
||||
description,
|
||||
oidcClientMetadata,
|
||||
customClientMetadata: {
|
||||
...customClientMetadataDefault,
|
||||
...customClientMetadata,
|
||||
},
|
||||
customClientMetadata,
|
||||
isAdmin,
|
||||
/** Specific metadata for protected apps */
|
||||
protectedAppMetadata,
|
||||
} = data;
|
||||
|
||||
return {
|
||||
name,
|
||||
...cond(
|
||||
!protectedAppMetadata && {
|
||||
description,
|
||||
oidcClientMetadata,
|
||||
customClientMetadata: {
|
||||
...customClientMetadataDefault,
|
||||
...customClientMetadata,
|
||||
},
|
||||
isAdmin,
|
||||
}
|
||||
),
|
||||
...cond(
|
||||
protectedAppMetadata && {
|
||||
protectedAppMetadata: {
|
||||
...protectedAppMetadata,
|
||||
sessionDuration: protectedAppMetadata.sessionDuration / 3600 / 24,
|
||||
},
|
||||
}
|
||||
),
|
||||
};
|
||||
},
|
||||
toUpdateApplicationData: (formData: ApplicationForm): Partial<Application> => {
|
||||
toRequestPayload: (data: ApplicationForm): DeepPartial<ApplicationResponse> => {
|
||||
const {
|
||||
name,
|
||||
description,
|
||||
oidcClientMetadata,
|
||||
customClientMetadata,
|
||||
isAdmin,
|
||||
protectedAppMetadata,
|
||||
} = data;
|
||||
|
||||
return {
|
||||
...formData,
|
||||
oidcClientMetadata: {
|
||||
...formData.oidcClientMetadata,
|
||||
redirectUris: mapToUriFormatArrays(formData.oidcClientMetadata.redirectUris),
|
||||
postLogoutRedirectUris: mapToUriFormatArrays(
|
||||
formData.oidcClientMetadata.postLogoutRedirectUris
|
||||
),
|
||||
},
|
||||
customClientMetadata: {
|
||||
...formData.customClientMetadata,
|
||||
corsAllowedOrigins: mapToUriOriginFormatArrays(
|
||||
formData.customClientMetadata.corsAllowedOrigins
|
||||
),
|
||||
},
|
||||
name,
|
||||
...cond(
|
||||
!protectedAppMetadata && {
|
||||
description,
|
||||
oidcClientMetadata: {
|
||||
...oidcClientMetadata,
|
||||
redirectUris: mapToUriFormatArrays(oidcClientMetadata?.redirectUris),
|
||||
postLogoutRedirectUris: mapToUriFormatArrays(
|
||||
oidcClientMetadata?.postLogoutRedirectUris
|
||||
),
|
||||
},
|
||||
customClientMetadata: {
|
||||
...customClientMetadata,
|
||||
corsAllowedOrigins: mapToUriOriginFormatArrays(
|
||||
customClientMetadata?.corsAllowedOrigins
|
||||
),
|
||||
},
|
||||
isAdmin,
|
||||
}
|
||||
),
|
||||
...cond(
|
||||
protectedAppMetadata && {
|
||||
protectedAppMetadata: {
|
||||
...protectedAppMetadata,
|
||||
sessionDuration: protectedAppMetadata.sessionDuration * 3600 * 24,
|
||||
},
|
||||
}
|
||||
),
|
||||
};
|
||||
},
|
||||
};
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
display: flex;
|
||||
align-items: center;
|
||||
font: var(--font-label-2);
|
||||
white-space: pre;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
.list {
|
||||
|
|
|
@ -57,7 +57,12 @@ function ProtectedAppCreationForm() {
|
|||
</Link>
|
||||
<CopyToClipboard value={host} variant="icon" />
|
||||
<Tooltip content={t('general.open')}>
|
||||
<IconButton size="small">
|
||||
<IconButton
|
||||
size="small"
|
||||
onClick={() => {
|
||||
window.open(`https://${host}`, '_blank');
|
||||
}}
|
||||
>
|
||||
<ExternalLinkIcon />
|
||||
</IconButton>
|
||||
</Tooltip>
|
||||
|
|
|
@ -6,6 +6,17 @@ const application_details = {
|
|||
settings_description:
|
||||
'Anwendungen werden verwendet, um Ihre Anwendungen in Logto für OIDC, Anmeldeerfahrung, Audit-Logs usw. zu identifizieren.',
|
||||
/** UNTRANSLATED */
|
||||
integration: 'Integration',
|
||||
/** UNTRANSLATED */
|
||||
integration_description:
|
||||
"Deploy with Logto secure workers, powered by Cloudflare's edge network for top-tier performance and 0ms cold starts worldwide.",
|
||||
/** UNTRANSLATED */
|
||||
service_configuration: 'Service configuration',
|
||||
/** UNTRANSLATED */
|
||||
service_configuration_description: 'Complete the necessary configurations in your service.',
|
||||
/** UNTRANSLATED */
|
||||
session: 'Session',
|
||||
/** UNTRANSLATED */
|
||||
endpoints_and_credentials: 'Endpoints & Credentials',
|
||||
/** UNTRANSLATED */
|
||||
endpoints_and_credentials_description:
|
||||
|
@ -67,6 +78,38 @@ const application_details = {
|
|||
enter_your_application_name: 'Gib einen Anwendungsnamen ein',
|
||||
application_deleted: 'Anwendung {{name}} wurde erfolgreich gelöscht',
|
||||
redirect_uri_required: 'Gib mindestens eine Umleitungs-URI an',
|
||||
/** UNTRANSLATED */
|
||||
app_domain_protected: 'App domain protected',
|
||||
/** UNTRANSLATED */
|
||||
app_domain_protected_description:
|
||||
'Feel free to utilize your domain <domain></domain> which is consistently valid.',
|
||||
/** UNTRANSLATED */
|
||||
origin_url_tip:
|
||||
"Enter primary website address of your application, excluding any '/routes'.\n\nNote: The Origin URL itself won't require authentication; only accesses via the added app domain will be protected.",
|
||||
/** UNTRANSLATED */
|
||||
custom_rules: 'Custom authentication rules',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_placeholder: '^/(admin|privacy)/.+$',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_description:
|
||||
'Set rules with regular expressions for authentication-required routes. Default: full-site protection if blank.',
|
||||
/** UNTRANSLATED */
|
||||
authentication_routes: 'Authentication routes',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_tip:
|
||||
"Here are two case scenarios:<ol><li>To only protect routes '/admin' and '/privacy' with authentication: ^/(admin|privacy)/.*</li><li>To exclude JPG images from authentication: ^(?!.*\\.jpg$).*$</li></ol>",
|
||||
/** UNTRANSLATED */
|
||||
authentication_routes_description:
|
||||
'Redirect your authentication button using the specified routes. Note: These routes are irreplaceable.',
|
||||
/** UNTRANSLATED */
|
||||
implement_jwt_verification: 'Implement JWT verification',
|
||||
/** UNTRANSLATED */
|
||||
implement_jwt_verification_description:
|
||||
'Configure JWT in your service for essential security communication. Follow the <a>JWT implementation guide</a>.',
|
||||
/** UNTRANSLATED */
|
||||
session_duration: 'Session duration (days)',
|
||||
/** UNTRANSLATED */
|
||||
try_it: 'Try it',
|
||||
branding: {
|
||||
/** UNTRANSLATED */
|
||||
name: 'Branding',
|
||||
|
|
|
@ -5,6 +5,12 @@ const application_details = {
|
|||
settings: 'Settings',
|
||||
settings_description:
|
||||
'Applications are used to identify your applications in Logto for OIDC, sign-in experience, audit logs, etc.',
|
||||
integration: 'Integration',
|
||||
integration_description:
|
||||
"Deploy with Logto secure workers, powered by Cloudflare's edge network for top-tier performance and 0ms cold starts worldwide.",
|
||||
service_configuration: 'Service configuration',
|
||||
service_configuration_description: 'Complete the necessary configurations in your service.',
|
||||
session: 'Session',
|
||||
endpoints_and_credentials: 'Endpoints & Credentials',
|
||||
endpoints_and_credentials_description:
|
||||
'Use the following endpoints and credentials to set up the OIDC connection in your application.',
|
||||
|
@ -61,6 +67,25 @@ const application_details = {
|
|||
enter_your_application_name: 'Enter your application name',
|
||||
application_deleted: 'Application {{name}} has been successfully deleted',
|
||||
redirect_uri_required: 'You must enter at least one redirect URI',
|
||||
app_domain_protected: 'App domain protected',
|
||||
app_domain_protected_description:
|
||||
'Feel free to utilize your domain <domain></domain> which is consistently valid.',
|
||||
origin_url_tip:
|
||||
"Enter primary website address of your application, excluding any '/routes'.\n\nNote: The Origin URL itself won't require authentication; only accesses via the added app domain will be protected.",
|
||||
custom_rules: 'Custom authentication rules',
|
||||
custom_rules_placeholder: '^/(admin|privacy)/.+$',
|
||||
custom_rules_description:
|
||||
'Set rules with regular expressions for authentication-required routes. Default: full-site protection if blank.',
|
||||
authentication_routes: 'Authentication routes',
|
||||
custom_rules_tip:
|
||||
"Here are two case scenarios:<ol><li>To only protect routes '/admin' and '/privacy' with authentication: ^/(admin|privacy)/.*</li><li>To exclude JPG images from authentication: ^(?!.*\\.jpg$).*$</li></ol>",
|
||||
authentication_routes_description:
|
||||
'Redirect your authentication button using the specified routes. Note: These routes are irreplaceable.',
|
||||
implement_jwt_verification: 'Implement JWT verification',
|
||||
implement_jwt_verification_description:
|
||||
'Configure JWT in your service for essential security communication. Follow the <a>JWT implementation guide</a>.',
|
||||
session_duration: 'Session duration (days)',
|
||||
try_it: 'Try it',
|
||||
branding: {
|
||||
name: 'Branding',
|
||||
description: "Customize your application's display name and logo on the consent screen.",
|
||||
|
|
|
@ -6,6 +6,17 @@ const application_details = {
|
|||
settings_description:
|
||||
'Las aplicaciones se utilizan para identificar tus aplicaciones en Logto para OIDC, experiencia de inicio de sesión, registros de auditoría, etc.',
|
||||
/** UNTRANSLATED */
|
||||
integration: 'Integration',
|
||||
/** UNTRANSLATED */
|
||||
integration_description:
|
||||
"Deploy with Logto secure workers, powered by Cloudflare's edge network for top-tier performance and 0ms cold starts worldwide.",
|
||||
/** UNTRANSLATED */
|
||||
service_configuration: 'Service configuration',
|
||||
/** UNTRANSLATED */
|
||||
service_configuration_description: 'Complete the necessary configurations in your service.',
|
||||
/** UNTRANSLATED */
|
||||
session: 'Session',
|
||||
/** UNTRANSLATED */
|
||||
endpoints_and_credentials: 'Endpoints & Credentials',
|
||||
/** UNTRANSLATED */
|
||||
endpoints_and_credentials_description:
|
||||
|
@ -67,6 +78,38 @@ const application_details = {
|
|||
enter_your_application_name: 'Ingresa el nombre de tu aplicación',
|
||||
application_deleted: 'Se ha eliminado exitosamente la aplicación {{name}}',
|
||||
redirect_uri_required: 'Debes ingresar al menos un URI de Redireccionamiento',
|
||||
/** UNTRANSLATED */
|
||||
app_domain_protected: 'App domain protected',
|
||||
/** UNTRANSLATED */
|
||||
app_domain_protected_description:
|
||||
'Feel free to utilize your domain <domain></domain> which is consistently valid.',
|
||||
/** UNTRANSLATED */
|
||||
origin_url_tip:
|
||||
"Enter primary website address of your application, excluding any '/routes'.\n\nNote: The Origin URL itself won't require authentication; only accesses via the added app domain will be protected.",
|
||||
/** UNTRANSLATED */
|
||||
custom_rules: 'Custom authentication rules',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_placeholder: '^/(admin|privacy)/.+$',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_description:
|
||||
'Set rules with regular expressions for authentication-required routes. Default: full-site protection if blank.',
|
||||
/** UNTRANSLATED */
|
||||
authentication_routes: 'Authentication routes',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_tip:
|
||||
"Here are two case scenarios:<ol><li>To only protect routes '/admin' and '/privacy' with authentication: ^/(admin|privacy)/.*</li><li>To exclude JPG images from authentication: ^(?!.*\\.jpg$).*$</li></ol>",
|
||||
/** UNTRANSLATED */
|
||||
authentication_routes_description:
|
||||
'Redirect your authentication button using the specified routes. Note: These routes are irreplaceable.',
|
||||
/** UNTRANSLATED */
|
||||
implement_jwt_verification: 'Implement JWT verification',
|
||||
/** UNTRANSLATED */
|
||||
implement_jwt_verification_description:
|
||||
'Configure JWT in your service for essential security communication. Follow the <a>JWT implementation guide</a>.',
|
||||
/** UNTRANSLATED */
|
||||
session_duration: 'Session duration (days)',
|
||||
/** UNTRANSLATED */
|
||||
try_it: 'Try it',
|
||||
branding: {
|
||||
/** UNTRANSLATED */
|
||||
name: 'Branding',
|
||||
|
|
|
@ -6,6 +6,17 @@ const application_details = {
|
|||
settings_description:
|
||||
"Les applications sont utilisées pour identifier vos applications dans Logto pour OIDC, l'expérience de connexion, les journaux d'audit, etc.",
|
||||
/** UNTRANSLATED */
|
||||
integration: 'Integration',
|
||||
/** UNTRANSLATED */
|
||||
integration_description:
|
||||
"Deploy with Logto secure workers, powered by Cloudflare's edge network for top-tier performance and 0ms cold starts worldwide.",
|
||||
/** UNTRANSLATED */
|
||||
service_configuration: 'Service configuration',
|
||||
/** UNTRANSLATED */
|
||||
service_configuration_description: 'Complete the necessary configurations in your service.',
|
||||
/** UNTRANSLATED */
|
||||
session: 'Session',
|
||||
/** UNTRANSLATED */
|
||||
endpoints_and_credentials: 'Endpoints & Credentials',
|
||||
/** UNTRANSLATED */
|
||||
endpoints_and_credentials_description:
|
||||
|
@ -67,6 +78,38 @@ const application_details = {
|
|||
enter_your_application_name: 'Entrez le nom de votre application',
|
||||
application_deleted: "L'application {{name}} a été supprimée avec succès.",
|
||||
redirect_uri_required: 'Vous devez entrer au moins un URI de redirection.',
|
||||
/** UNTRANSLATED */
|
||||
app_domain_protected: 'App domain protected',
|
||||
/** UNTRANSLATED */
|
||||
app_domain_protected_description:
|
||||
'Feel free to utilize your domain <domain></domain> which is consistently valid.',
|
||||
/** UNTRANSLATED */
|
||||
origin_url_tip:
|
||||
"Enter primary website address of your application, excluding any '/routes'.\n\nNote: The Origin URL itself won't require authentication; only accesses via the added app domain will be protected.",
|
||||
/** UNTRANSLATED */
|
||||
custom_rules: 'Custom authentication rules',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_placeholder: '^/(admin|privacy)/.+$',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_description:
|
||||
'Set rules with regular expressions for authentication-required routes. Default: full-site protection if blank.',
|
||||
/** UNTRANSLATED */
|
||||
authentication_routes: 'Authentication routes',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_tip:
|
||||
"Here are two case scenarios:<ol><li>To only protect routes '/admin' and '/privacy' with authentication: ^/(admin|privacy)/.*</li><li>To exclude JPG images from authentication: ^(?!.*\\.jpg$).*$</li></ol>",
|
||||
/** UNTRANSLATED */
|
||||
authentication_routes_description:
|
||||
'Redirect your authentication button using the specified routes. Note: These routes are irreplaceable.',
|
||||
/** UNTRANSLATED */
|
||||
implement_jwt_verification: 'Implement JWT verification',
|
||||
/** UNTRANSLATED */
|
||||
implement_jwt_verification_description:
|
||||
'Configure JWT in your service for essential security communication. Follow the <a>JWT implementation guide</a>.',
|
||||
/** UNTRANSLATED */
|
||||
session_duration: 'Session duration (days)',
|
||||
/** UNTRANSLATED */
|
||||
try_it: 'Try it',
|
||||
branding: {
|
||||
/** UNTRANSLATED */
|
||||
name: 'Branding',
|
||||
|
|
|
@ -6,6 +6,17 @@ const application_details = {
|
|||
settings_description:
|
||||
'Le applicazioni vengono utilizzate per identificare le tue applicazioni in Logto per OIDC, esperienza di accesso, registri di controllo, ecc.',
|
||||
/** UNTRANSLATED */
|
||||
integration: 'Integration',
|
||||
/** UNTRANSLATED */
|
||||
integration_description:
|
||||
"Deploy with Logto secure workers, powered by Cloudflare's edge network for top-tier performance and 0ms cold starts worldwide.",
|
||||
/** UNTRANSLATED */
|
||||
service_configuration: 'Service configuration',
|
||||
/** UNTRANSLATED */
|
||||
service_configuration_description: 'Complete the necessary configurations in your service.',
|
||||
/** UNTRANSLATED */
|
||||
session: 'Session',
|
||||
/** UNTRANSLATED */
|
||||
endpoints_and_credentials: 'Endpoints & Credentials',
|
||||
/** UNTRANSLATED */
|
||||
endpoints_and_credentials_description:
|
||||
|
@ -67,6 +78,38 @@ const application_details = {
|
|||
enter_your_application_name: 'Inserisci il nome della tua applicazione',
|
||||
application_deleted: "L'applicazione {{name}} è stata eliminata con successo",
|
||||
redirect_uri_required: 'Devi inserire almeno un URI di reindirizzamento',
|
||||
/** UNTRANSLATED */
|
||||
app_domain_protected: 'App domain protected',
|
||||
/** UNTRANSLATED */
|
||||
app_domain_protected_description:
|
||||
'Feel free to utilize your domain <domain></domain> which is consistently valid.',
|
||||
/** UNTRANSLATED */
|
||||
origin_url_tip:
|
||||
"Enter primary website address of your application, excluding any '/routes'.\n\nNote: The Origin URL itself won't require authentication; only accesses via the added app domain will be protected.",
|
||||
/** UNTRANSLATED */
|
||||
custom_rules: 'Custom authentication rules',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_placeholder: '^/(admin|privacy)/.+$',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_description:
|
||||
'Set rules with regular expressions for authentication-required routes. Default: full-site protection if blank.',
|
||||
/** UNTRANSLATED */
|
||||
authentication_routes: 'Authentication routes',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_tip:
|
||||
"Here are two case scenarios:<ol><li>To only protect routes '/admin' and '/privacy' with authentication: ^/(admin|privacy)/.*</li><li>To exclude JPG images from authentication: ^(?!.*\\.jpg$).*$</li></ol>",
|
||||
/** UNTRANSLATED */
|
||||
authentication_routes_description:
|
||||
'Redirect your authentication button using the specified routes. Note: These routes are irreplaceable.',
|
||||
/** UNTRANSLATED */
|
||||
implement_jwt_verification: 'Implement JWT verification',
|
||||
/** UNTRANSLATED */
|
||||
implement_jwt_verification_description:
|
||||
'Configure JWT in your service for essential security communication. Follow the <a>JWT implementation guide</a>.',
|
||||
/** UNTRANSLATED */
|
||||
session_duration: 'Session duration (days)',
|
||||
/** UNTRANSLATED */
|
||||
try_it: 'Try it',
|
||||
branding: {
|
||||
/** UNTRANSLATED */
|
||||
name: 'Branding',
|
||||
|
|
|
@ -6,6 +6,17 @@ const application_details = {
|
|||
settings_description:
|
||||
'アプリケーションは、Logto for OIDC、サインインエクスペリエンス、監査ログなどでアプリケーションを識別するために使用されます。',
|
||||
/** UNTRANSLATED */
|
||||
integration: 'Integration',
|
||||
/** UNTRANSLATED */
|
||||
integration_description:
|
||||
"Deploy with Logto secure workers, powered by Cloudflare's edge network for top-tier performance and 0ms cold starts worldwide.",
|
||||
/** UNTRANSLATED */
|
||||
service_configuration: 'Service configuration',
|
||||
/** UNTRANSLATED */
|
||||
service_configuration_description: 'Complete the necessary configurations in your service.',
|
||||
/** UNTRANSLATED */
|
||||
session: 'Session',
|
||||
/** UNTRANSLATED */
|
||||
endpoints_and_credentials: 'Endpoints & Credentials',
|
||||
/** UNTRANSLATED */
|
||||
endpoints_and_credentials_description:
|
||||
|
@ -67,6 +78,38 @@ const application_details = {
|
|||
enter_your_application_name: 'アプリケーション名を入力してください',
|
||||
application_deleted: 'アプリケーション{{name}}が正常に削除されました',
|
||||
redirect_uri_required: 'リダイレクトURIを少なくとも1つ入力する必要があります',
|
||||
/** UNTRANSLATED */
|
||||
app_domain_protected: 'App domain protected',
|
||||
/** UNTRANSLATED */
|
||||
app_domain_protected_description:
|
||||
'Feel free to utilize your domain <domain></domain> which is consistently valid.',
|
||||
/** UNTRANSLATED */
|
||||
origin_url_tip:
|
||||
"Enter primary website address of your application, excluding any '/routes'.\n\nNote: The Origin URL itself won't require authentication; only accesses via the added app domain will be protected.",
|
||||
/** UNTRANSLATED */
|
||||
custom_rules: 'Custom authentication rules',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_placeholder: '^/(admin|privacy)/.+$',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_description:
|
||||
'Set rules with regular expressions for authentication-required routes. Default: full-site protection if blank.',
|
||||
/** UNTRANSLATED */
|
||||
authentication_routes: 'Authentication routes',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_tip:
|
||||
"Here are two case scenarios:<ol><li>To only protect routes '/admin' and '/privacy' with authentication: ^/(admin|privacy)/.*</li><li>To exclude JPG images from authentication: ^(?!.*\\.jpg$).*$</li></ol>",
|
||||
/** UNTRANSLATED */
|
||||
authentication_routes_description:
|
||||
'Redirect your authentication button using the specified routes. Note: These routes are irreplaceable.',
|
||||
/** UNTRANSLATED */
|
||||
implement_jwt_verification: 'Implement JWT verification',
|
||||
/** UNTRANSLATED */
|
||||
implement_jwt_verification_description:
|
||||
'Configure JWT in your service for essential security communication. Follow the <a>JWT implementation guide</a>.',
|
||||
/** UNTRANSLATED */
|
||||
session_duration: 'Session duration (days)',
|
||||
/** UNTRANSLATED */
|
||||
try_it: 'Try it',
|
||||
branding: {
|
||||
/** UNTRANSLATED */
|
||||
name: 'Branding',
|
||||
|
|
|
@ -6,6 +6,17 @@ const application_details = {
|
|||
settings_description:
|
||||
'애플리케이션은 Logto for OIDC, 로그인 환경, 감사 로그 등에서 애플리케이션을 식별하는 데 사용돼요.',
|
||||
/** UNTRANSLATED */
|
||||
integration: 'Integration',
|
||||
/** UNTRANSLATED */
|
||||
integration_description:
|
||||
"Deploy with Logto secure workers, powered by Cloudflare's edge network for top-tier performance and 0ms cold starts worldwide.",
|
||||
/** UNTRANSLATED */
|
||||
service_configuration: 'Service configuration',
|
||||
/** UNTRANSLATED */
|
||||
service_configuration_description: 'Complete the necessary configurations in your service.',
|
||||
/** UNTRANSLATED */
|
||||
session: 'Session',
|
||||
/** UNTRANSLATED */
|
||||
endpoints_and_credentials: 'Endpoints & Credentials',
|
||||
/** UNTRANSLATED */
|
||||
endpoints_and_credentials_description:
|
||||
|
@ -67,6 +78,38 @@ const application_details = {
|
|||
enter_your_application_name: '어플리케이션 이름을 입력해 주세요.',
|
||||
application_deleted: '{{name}} 어플리케이션이 성공적으로 삭제되었어요.',
|
||||
redirect_uri_required: '반드시 최소 하나의 Redirect URI 를 입력해야 해요.',
|
||||
/** UNTRANSLATED */
|
||||
app_domain_protected: 'App domain protected',
|
||||
/** UNTRANSLATED */
|
||||
app_domain_protected_description:
|
||||
'Feel free to utilize your domain <domain></domain> which is consistently valid.',
|
||||
/** UNTRANSLATED */
|
||||
origin_url_tip:
|
||||
"Enter primary website address of your application, excluding any '/routes'.\n\nNote: The Origin URL itself won't require authentication; only accesses via the added app domain will be protected.",
|
||||
/** UNTRANSLATED */
|
||||
custom_rules: 'Custom authentication rules',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_placeholder: '^/(admin|privacy)/.+$',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_description:
|
||||
'Set rules with regular expressions for authentication-required routes. Default: full-site protection if blank.',
|
||||
/** UNTRANSLATED */
|
||||
authentication_routes: 'Authentication routes',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_tip:
|
||||
"Here are two case scenarios:<ol><li>To only protect routes '/admin' and '/privacy' with authentication: ^/(admin|privacy)/.*</li><li>To exclude JPG images from authentication: ^(?!.*\\.jpg$).*$</li></ol>",
|
||||
/** UNTRANSLATED */
|
||||
authentication_routes_description:
|
||||
'Redirect your authentication button using the specified routes. Note: These routes are irreplaceable.',
|
||||
/** UNTRANSLATED */
|
||||
implement_jwt_verification: 'Implement JWT verification',
|
||||
/** UNTRANSLATED */
|
||||
implement_jwt_verification_description:
|
||||
'Configure JWT in your service for essential security communication. Follow the <a>JWT implementation guide</a>.',
|
||||
/** UNTRANSLATED */
|
||||
session_duration: 'Session duration (days)',
|
||||
/** UNTRANSLATED */
|
||||
try_it: 'Try it',
|
||||
branding: {
|
||||
/** UNTRANSLATED */
|
||||
name: 'Branding',
|
||||
|
|
|
@ -6,6 +6,17 @@ const application_details = {
|
|||
settings_description:
|
||||
'Aplikacje są używane do identyfikowania Twoich aplikacji w Logto dla OIDC, doświadczenia logowania, dzienników audytowych itp.',
|
||||
/** UNTRANSLATED */
|
||||
integration: 'Integration',
|
||||
/** UNTRANSLATED */
|
||||
integration_description:
|
||||
"Deploy with Logto secure workers, powered by Cloudflare's edge network for top-tier performance and 0ms cold starts worldwide.",
|
||||
/** UNTRANSLATED */
|
||||
service_configuration: 'Service configuration',
|
||||
/** UNTRANSLATED */
|
||||
service_configuration_description: 'Complete the necessary configurations in your service.',
|
||||
/** UNTRANSLATED */
|
||||
session: 'Session',
|
||||
/** UNTRANSLATED */
|
||||
endpoints_and_credentials: 'Endpoints & Credentials',
|
||||
/** UNTRANSLATED */
|
||||
endpoints_and_credentials_description:
|
||||
|
@ -67,6 +78,38 @@ const application_details = {
|
|||
enter_your_application_name: 'Wpisz nazwę swojej aplikacji',
|
||||
application_deleted: 'Aplikacja {{name}} została pomyślnie usunięta',
|
||||
redirect_uri_required: 'Musisz wpisać co najmniej jeden adres URL przekierowania',
|
||||
/** UNTRANSLATED */
|
||||
app_domain_protected: 'App domain protected',
|
||||
/** UNTRANSLATED */
|
||||
app_domain_protected_description:
|
||||
'Feel free to utilize your domain <domain></domain> which is consistently valid.',
|
||||
/** UNTRANSLATED */
|
||||
origin_url_tip:
|
||||
"Enter primary website address of your application, excluding any '/routes'.\n\nNote: The Origin URL itself won't require authentication; only accesses via the added app domain will be protected.",
|
||||
/** UNTRANSLATED */
|
||||
custom_rules: 'Custom authentication rules',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_placeholder: '^/(admin|privacy)/.+$',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_description:
|
||||
'Set rules with regular expressions for authentication-required routes. Default: full-site protection if blank.',
|
||||
/** UNTRANSLATED */
|
||||
authentication_routes: 'Authentication routes',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_tip:
|
||||
"Here are two case scenarios:<ol><li>To only protect routes '/admin' and '/privacy' with authentication: ^/(admin|privacy)/.*</li><li>To exclude JPG images from authentication: ^(?!.*\\.jpg$).*$</li></ol>",
|
||||
/** UNTRANSLATED */
|
||||
authentication_routes_description:
|
||||
'Redirect your authentication button using the specified routes. Note: These routes are irreplaceable.',
|
||||
/** UNTRANSLATED */
|
||||
implement_jwt_verification: 'Implement JWT verification',
|
||||
/** UNTRANSLATED */
|
||||
implement_jwt_verification_description:
|
||||
'Configure JWT in your service for essential security communication. Follow the <a>JWT implementation guide</a>.',
|
||||
/** UNTRANSLATED */
|
||||
session_duration: 'Session duration (days)',
|
||||
/** UNTRANSLATED */
|
||||
try_it: 'Try it',
|
||||
branding: {
|
||||
/** UNTRANSLATED */
|
||||
name: 'Branding',
|
||||
|
|
|
@ -6,6 +6,17 @@ const application_details = {
|
|||
settings_description:
|
||||
'Os aplicativos são usados para identificar seus aplicativos no Logto para OIDC, experiência de login, logs de auditoria, etc.',
|
||||
/** UNTRANSLATED */
|
||||
integration: 'Integration',
|
||||
/** UNTRANSLATED */
|
||||
integration_description:
|
||||
"Deploy with Logto secure workers, powered by Cloudflare's edge network for top-tier performance and 0ms cold starts worldwide.",
|
||||
/** UNTRANSLATED */
|
||||
service_configuration: 'Service configuration',
|
||||
/** UNTRANSLATED */
|
||||
service_configuration_description: 'Complete the necessary configurations in your service.',
|
||||
/** UNTRANSLATED */
|
||||
session: 'Session',
|
||||
/** UNTRANSLATED */
|
||||
endpoints_and_credentials: 'Endpoints & Credentials',
|
||||
/** UNTRANSLATED */
|
||||
endpoints_and_credentials_description:
|
||||
|
@ -67,6 +78,38 @@ const application_details = {
|
|||
enter_your_application_name: 'Digite o nome do seu aplicativo',
|
||||
application_deleted: 'O aplicativo {{name}} foi excluído com sucesso',
|
||||
redirect_uri_required: 'Você deve inserir pelo menos um URI de redirecionamento',
|
||||
/** UNTRANSLATED */
|
||||
app_domain_protected: 'App domain protected',
|
||||
/** UNTRANSLATED */
|
||||
app_domain_protected_description:
|
||||
'Feel free to utilize your domain <domain></domain> which is consistently valid.',
|
||||
/** UNTRANSLATED */
|
||||
origin_url_tip:
|
||||
"Enter primary website address of your application, excluding any '/routes'.\n\nNote: The Origin URL itself won't require authentication; only accesses via the added app domain will be protected.",
|
||||
/** UNTRANSLATED */
|
||||
custom_rules: 'Custom authentication rules',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_placeholder: '^/(admin|privacy)/.+$',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_description:
|
||||
'Set rules with regular expressions for authentication-required routes. Default: full-site protection if blank.',
|
||||
/** UNTRANSLATED */
|
||||
authentication_routes: 'Authentication routes',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_tip:
|
||||
"Here are two case scenarios:<ol><li>To only protect routes '/admin' and '/privacy' with authentication: ^/(admin|privacy)/.*</li><li>To exclude JPG images from authentication: ^(?!.*\\.jpg$).*$</li></ol>",
|
||||
/** UNTRANSLATED */
|
||||
authentication_routes_description:
|
||||
'Redirect your authentication button using the specified routes. Note: These routes are irreplaceable.',
|
||||
/** UNTRANSLATED */
|
||||
implement_jwt_verification: 'Implement JWT verification',
|
||||
/** UNTRANSLATED */
|
||||
implement_jwt_verification_description:
|
||||
'Configure JWT in your service for essential security communication. Follow the <a>JWT implementation guide</a>.',
|
||||
/** UNTRANSLATED */
|
||||
session_duration: 'Session duration (days)',
|
||||
/** UNTRANSLATED */
|
||||
try_it: 'Try it',
|
||||
branding: {
|
||||
/** UNTRANSLATED */
|
||||
name: 'Branding',
|
||||
|
|
|
@ -6,6 +6,17 @@ const application_details = {
|
|||
settings_description:
|
||||
'As aplicações são utilizadas para identificar as suas aplicações no Logto para OIDC, experiência de início de sessão, registos de auditoria, etc.',
|
||||
/** UNTRANSLATED */
|
||||
integration: 'Integration',
|
||||
/** UNTRANSLATED */
|
||||
integration_description:
|
||||
"Deploy with Logto secure workers, powered by Cloudflare's edge network for top-tier performance and 0ms cold starts worldwide.",
|
||||
/** UNTRANSLATED */
|
||||
service_configuration: 'Service configuration',
|
||||
/** UNTRANSLATED */
|
||||
service_configuration_description: 'Complete the necessary configurations in your service.',
|
||||
/** UNTRANSLATED */
|
||||
session: 'Session',
|
||||
/** UNTRANSLATED */
|
||||
endpoints_and_credentials: 'Endpoints & Credentials',
|
||||
/** UNTRANSLATED */
|
||||
endpoints_and_credentials_description:
|
||||
|
@ -67,6 +78,38 @@ const application_details = {
|
|||
enter_your_application_name: 'Insira o nome da aplicação',
|
||||
application_deleted: 'Aplicação {{name}} eliminada com sucesso',
|
||||
redirect_uri_required: 'Deve inserir pelo menos um URI de redirecionamento',
|
||||
/** UNTRANSLATED */
|
||||
app_domain_protected: 'App domain protected',
|
||||
/** UNTRANSLATED */
|
||||
app_domain_protected_description:
|
||||
'Feel free to utilize your domain <domain></domain> which is consistently valid.',
|
||||
/** UNTRANSLATED */
|
||||
origin_url_tip:
|
||||
"Enter primary website address of your application, excluding any '/routes'.\n\nNote: The Origin URL itself won't require authentication; only accesses via the added app domain will be protected.",
|
||||
/** UNTRANSLATED */
|
||||
custom_rules: 'Custom authentication rules',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_placeholder: '^/(admin|privacy)/.+$',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_description:
|
||||
'Set rules with regular expressions for authentication-required routes. Default: full-site protection if blank.',
|
||||
/** UNTRANSLATED */
|
||||
authentication_routes: 'Authentication routes',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_tip:
|
||||
"Here are two case scenarios:<ol><li>To only protect routes '/admin' and '/privacy' with authentication: ^/(admin|privacy)/.*</li><li>To exclude JPG images from authentication: ^(?!.*\\.jpg$).*$</li></ol>",
|
||||
/** UNTRANSLATED */
|
||||
authentication_routes_description:
|
||||
'Redirect your authentication button using the specified routes. Note: These routes are irreplaceable.',
|
||||
/** UNTRANSLATED */
|
||||
implement_jwt_verification: 'Implement JWT verification',
|
||||
/** UNTRANSLATED */
|
||||
implement_jwt_verification_description:
|
||||
'Configure JWT in your service for essential security communication. Follow the <a>JWT implementation guide</a>.',
|
||||
/** UNTRANSLATED */
|
||||
session_duration: 'Session duration (days)',
|
||||
/** UNTRANSLATED */
|
||||
try_it: 'Try it',
|
||||
branding: {
|
||||
/** UNTRANSLATED */
|
||||
name: 'Branding',
|
||||
|
|
|
@ -6,6 +6,17 @@ const application_details = {
|
|||
settings_description:
|
||||
'Приложения используются для идентификации ваших приложений в Logto для OIDC, опыта входа, аудита и т. Д.',
|
||||
/** UNTRANSLATED */
|
||||
integration: 'Integration',
|
||||
/** UNTRANSLATED */
|
||||
integration_description:
|
||||
"Deploy with Logto secure workers, powered by Cloudflare's edge network for top-tier performance and 0ms cold starts worldwide.",
|
||||
/** UNTRANSLATED */
|
||||
service_configuration: 'Service configuration',
|
||||
/** UNTRANSLATED */
|
||||
service_configuration_description: 'Complete the necessary configurations in your service.',
|
||||
/** UNTRANSLATED */
|
||||
session: 'Session',
|
||||
/** UNTRANSLATED */
|
||||
endpoints_and_credentials: 'Endpoints & Credentials',
|
||||
/** UNTRANSLATED */
|
||||
endpoints_and_credentials_description:
|
||||
|
@ -67,6 +78,38 @@ const application_details = {
|
|||
enter_your_application_name: 'Введите название своего приложения',
|
||||
application_deleted: 'Приложение {{name}} успешно удалено',
|
||||
redirect_uri_required: 'Вы должны ввести по крайней мере один URI перенаправления',
|
||||
/** UNTRANSLATED */
|
||||
app_domain_protected: 'App domain protected',
|
||||
/** UNTRANSLATED */
|
||||
app_domain_protected_description:
|
||||
'Feel free to utilize your domain <domain></domain> which is consistently valid.',
|
||||
/** UNTRANSLATED */
|
||||
origin_url_tip:
|
||||
"Enter primary website address of your application, excluding any '/routes'.\n\nNote: The Origin URL itself won't require authentication; only accesses via the added app domain will be protected.",
|
||||
/** UNTRANSLATED */
|
||||
custom_rules: 'Custom authentication rules',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_placeholder: '^/(admin|privacy)/.+$',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_description:
|
||||
'Set rules with regular expressions for authentication-required routes. Default: full-site protection if blank.',
|
||||
/** UNTRANSLATED */
|
||||
authentication_routes: 'Authentication routes',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_tip:
|
||||
"Here are two case scenarios:<ol><li>To only protect routes '/admin' and '/privacy' with authentication: ^/(admin|privacy)/.*</li><li>To exclude JPG images from authentication: ^(?!.*\\.jpg$).*$</li></ol>",
|
||||
/** UNTRANSLATED */
|
||||
authentication_routes_description:
|
||||
'Redirect your authentication button using the specified routes. Note: These routes are irreplaceable.',
|
||||
/** UNTRANSLATED */
|
||||
implement_jwt_verification: 'Implement JWT verification',
|
||||
/** UNTRANSLATED */
|
||||
implement_jwt_verification_description:
|
||||
'Configure JWT in your service for essential security communication. Follow the <a>JWT implementation guide</a>.',
|
||||
/** UNTRANSLATED */
|
||||
session_duration: 'Session duration (days)',
|
||||
/** UNTRANSLATED */
|
||||
try_it: 'Try it',
|
||||
branding: {
|
||||
/** UNTRANSLATED */
|
||||
name: 'Branding',
|
||||
|
|
|
@ -6,6 +6,17 @@ const application_details = {
|
|||
settings_description:
|
||||
'Uygulamalar, Logto için OIDC, oturum açma deneyimi, denetim kayıtları vb. alanlarda uygulamalarınızı tanımlamak için kullanılır.',
|
||||
/** UNTRANSLATED */
|
||||
integration: 'Integration',
|
||||
/** UNTRANSLATED */
|
||||
integration_description:
|
||||
"Deploy with Logto secure workers, powered by Cloudflare's edge network for top-tier performance and 0ms cold starts worldwide.",
|
||||
/** UNTRANSLATED */
|
||||
service_configuration: 'Service configuration',
|
||||
/** UNTRANSLATED */
|
||||
service_configuration_description: 'Complete the necessary configurations in your service.',
|
||||
/** UNTRANSLATED */
|
||||
session: 'Session',
|
||||
/** UNTRANSLATED */
|
||||
endpoints_and_credentials: 'Endpoints & Credentials',
|
||||
/** UNTRANSLATED */
|
||||
endpoints_and_credentials_description:
|
||||
|
@ -67,6 +78,38 @@ const application_details = {
|
|||
enter_your_application_name: 'Uygulama adı giriniz',
|
||||
application_deleted: '{{name}} Uygulaması başarıyla silindi',
|
||||
redirect_uri_required: 'En az 1 yönlendirme URIı girmelisiniz',
|
||||
/** UNTRANSLATED */
|
||||
app_domain_protected: 'App domain protected',
|
||||
/** UNTRANSLATED */
|
||||
app_domain_protected_description:
|
||||
'Feel free to utilize your domain <domain></domain> which is consistently valid.',
|
||||
/** UNTRANSLATED */
|
||||
origin_url_tip:
|
||||
"Enter primary website address of your application, excluding any '/routes'.\n\nNote: The Origin URL itself won't require authentication; only accesses via the added app domain will be protected.",
|
||||
/** UNTRANSLATED */
|
||||
custom_rules: 'Custom authentication rules',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_placeholder: '^/(admin|privacy)/.+$',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_description:
|
||||
'Set rules with regular expressions for authentication-required routes. Default: full-site protection if blank.',
|
||||
/** UNTRANSLATED */
|
||||
authentication_routes: 'Authentication routes',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_tip:
|
||||
"Here are two case scenarios:<ol><li>To only protect routes '/admin' and '/privacy' with authentication: ^/(admin|privacy)/.*</li><li>To exclude JPG images from authentication: ^(?!.*\\.jpg$).*$</li></ol>",
|
||||
/** UNTRANSLATED */
|
||||
authentication_routes_description:
|
||||
'Redirect your authentication button using the specified routes. Note: These routes are irreplaceable.',
|
||||
/** UNTRANSLATED */
|
||||
implement_jwt_verification: 'Implement JWT verification',
|
||||
/** UNTRANSLATED */
|
||||
implement_jwt_verification_description:
|
||||
'Configure JWT in your service for essential security communication. Follow the <a>JWT implementation guide</a>.',
|
||||
/** UNTRANSLATED */
|
||||
session_duration: 'Session duration (days)',
|
||||
/** UNTRANSLATED */
|
||||
try_it: 'Try it',
|
||||
branding: {
|
||||
/** UNTRANSLATED */
|
||||
name: 'Branding',
|
||||
|
|
|
@ -5,6 +5,17 @@ const application_details = {
|
|||
settings: '设置',
|
||||
settings_description: '应用程序用于在 Logto OIDC、登录体验、审计日志等方面识别你的应用程序。',
|
||||
/** UNTRANSLATED */
|
||||
integration: 'Integration',
|
||||
/** UNTRANSLATED */
|
||||
integration_description:
|
||||
"Deploy with Logto secure workers, powered by Cloudflare's edge network for top-tier performance and 0ms cold starts worldwide.",
|
||||
/** UNTRANSLATED */
|
||||
service_configuration: 'Service configuration',
|
||||
/** UNTRANSLATED */
|
||||
service_configuration_description: 'Complete the necessary configurations in your service.',
|
||||
/** UNTRANSLATED */
|
||||
session: 'Session',
|
||||
/** UNTRANSLATED */
|
||||
endpoints_and_credentials: 'Endpoints & Credentials',
|
||||
/** UNTRANSLATED */
|
||||
endpoints_and_credentials_description:
|
||||
|
@ -64,6 +75,38 @@ const application_details = {
|
|||
enter_your_application_name: '输入你的应用名称',
|
||||
application_deleted: '应用 {{name}} 成功删除。',
|
||||
redirect_uri_required: '至少需要输入一个重定向 URI。',
|
||||
/** UNTRANSLATED */
|
||||
app_domain_protected: 'App domain protected',
|
||||
/** UNTRANSLATED */
|
||||
app_domain_protected_description:
|
||||
'Feel free to utilize your domain <domain></domain> which is consistently valid.',
|
||||
/** UNTRANSLATED */
|
||||
origin_url_tip:
|
||||
"Enter primary website address of your application, excluding any '/routes'.\n\nNote: The Origin URL itself won't require authentication; only accesses via the added app domain will be protected.",
|
||||
/** UNTRANSLATED */
|
||||
custom_rules: 'Custom authentication rules',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_placeholder: '^/(admin|privacy)/.+$',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_description:
|
||||
'Set rules with regular expressions for authentication-required routes. Default: full-site protection if blank.',
|
||||
/** UNTRANSLATED */
|
||||
authentication_routes: 'Authentication routes',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_tip:
|
||||
"Here are two case scenarios:<ol><li>To only protect routes '/admin' and '/privacy' with authentication: ^/(admin|privacy)/.*</li><li>To exclude JPG images from authentication: ^(?!.*\\.jpg$).*$</li></ol>",
|
||||
/** UNTRANSLATED */
|
||||
authentication_routes_description:
|
||||
'Redirect your authentication button using the specified routes. Note: These routes are irreplaceable.',
|
||||
/** UNTRANSLATED */
|
||||
implement_jwt_verification: 'Implement JWT verification',
|
||||
/** UNTRANSLATED */
|
||||
implement_jwt_verification_description:
|
||||
'Configure JWT in your service for essential security communication. Follow the <a>JWT implementation guide</a>.',
|
||||
/** UNTRANSLATED */
|
||||
session_duration: 'Session duration (days)',
|
||||
/** UNTRANSLATED */
|
||||
try_it: 'Try it',
|
||||
branding: {
|
||||
/** UNTRANSLATED */
|
||||
name: 'Branding',
|
||||
|
|
|
@ -5,6 +5,17 @@ const application_details = {
|
|||
settings: '設定',
|
||||
settings_description: '應用程式用於在 Logto OIDC、登入體驗、審計日誌等方面識別你的應用程式。',
|
||||
/** UNTRANSLATED */
|
||||
integration: 'Integration',
|
||||
/** UNTRANSLATED */
|
||||
integration_description:
|
||||
"Deploy with Logto secure workers, powered by Cloudflare's edge network for top-tier performance and 0ms cold starts worldwide.",
|
||||
/** UNTRANSLATED */
|
||||
service_configuration: 'Service configuration',
|
||||
/** UNTRANSLATED */
|
||||
service_configuration_description: 'Complete the necessary configurations in your service.',
|
||||
/** UNTRANSLATED */
|
||||
session: 'Session',
|
||||
/** UNTRANSLATED */
|
||||
endpoints_and_credentials: 'Endpoints & Credentials',
|
||||
/** UNTRANSLATED */
|
||||
endpoints_and_credentials_description:
|
||||
|
@ -64,6 +75,38 @@ const application_details = {
|
|||
enter_your_application_name: '輸入你的應用程式名稱',
|
||||
application_deleted: '應用 {{name}} 成功刪除。',
|
||||
redirect_uri_required: '至少需要輸入一個重定向 URL。',
|
||||
/** UNTRANSLATED */
|
||||
app_domain_protected: 'App domain protected',
|
||||
/** UNTRANSLATED */
|
||||
app_domain_protected_description:
|
||||
'Feel free to utilize your domain <domain></domain> which is consistently valid.',
|
||||
/** UNTRANSLATED */
|
||||
origin_url_tip:
|
||||
"Enter primary website address of your application, excluding any '/routes'.\n\nNote: The Origin URL itself won't require authentication; only accesses via the added app domain will be protected.",
|
||||
/** UNTRANSLATED */
|
||||
custom_rules: 'Custom authentication rules',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_placeholder: '^/(admin|privacy)/.+$',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_description:
|
||||
'Set rules with regular expressions for authentication-required routes. Default: full-site protection if blank.',
|
||||
/** UNTRANSLATED */
|
||||
authentication_routes: 'Authentication routes',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_tip:
|
||||
"Here are two case scenarios:<ol><li>To only protect routes '/admin' and '/privacy' with authentication: ^/(admin|privacy)/.*</li><li>To exclude JPG images from authentication: ^(?!.*\\.jpg$).*$</li></ol>",
|
||||
/** UNTRANSLATED */
|
||||
authentication_routes_description:
|
||||
'Redirect your authentication button using the specified routes. Note: These routes are irreplaceable.',
|
||||
/** UNTRANSLATED */
|
||||
implement_jwt_verification: 'Implement JWT verification',
|
||||
/** UNTRANSLATED */
|
||||
implement_jwt_verification_description:
|
||||
'Configure JWT in your service for essential security communication. Follow the <a>JWT implementation guide</a>.',
|
||||
/** UNTRANSLATED */
|
||||
session_duration: 'Session duration (days)',
|
||||
/** UNTRANSLATED */
|
||||
try_it: 'Try it',
|
||||
branding: {
|
||||
/** UNTRANSLATED */
|
||||
name: 'Branding',
|
||||
|
|
|
@ -5,6 +5,17 @@ const application_details = {
|
|||
settings: '設置',
|
||||
settings_description: '應用程式用於在 Logto OIDC、登錄體驗、審計日誌等方面識別你的應用程式。',
|
||||
/** UNTRANSLATED */
|
||||
integration: 'Integration',
|
||||
/** UNTRANSLATED */
|
||||
integration_description:
|
||||
"Deploy with Logto secure workers, powered by Cloudflare's edge network for top-tier performance and 0ms cold starts worldwide.",
|
||||
/** UNTRANSLATED */
|
||||
service_configuration: 'Service configuration',
|
||||
/** UNTRANSLATED */
|
||||
service_configuration_description: 'Complete the necessary configurations in your service.',
|
||||
/** UNTRANSLATED */
|
||||
session: 'Session',
|
||||
/** UNTRANSLATED */
|
||||
endpoints_and_credentials: 'Endpoints & Credentials',
|
||||
/** UNTRANSLATED */
|
||||
endpoints_and_credentials_description:
|
||||
|
@ -65,6 +76,38 @@ const application_details = {
|
|||
enter_your_application_name: '輸入你的應用程式姓名',
|
||||
application_deleted: '應用 {{name}} 成功刪除。',
|
||||
redirect_uri_required: '至少需要輸入一個重定向 URL。',
|
||||
/** UNTRANSLATED */
|
||||
app_domain_protected: 'App domain protected',
|
||||
/** UNTRANSLATED */
|
||||
app_domain_protected_description:
|
||||
'Feel free to utilize your domain <domain></domain> which is consistently valid.',
|
||||
/** UNTRANSLATED */
|
||||
origin_url_tip:
|
||||
"Enter primary website address of your application, excluding any '/routes'.\n\nNote: The Origin URL itself won't require authentication; only accesses via the added app domain will be protected.",
|
||||
/** UNTRANSLATED */
|
||||
custom_rules: 'Custom authentication rules',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_placeholder: '^/(admin|privacy)/.+$',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_description:
|
||||
'Set rules with regular expressions for authentication-required routes. Default: full-site protection if blank.',
|
||||
/** UNTRANSLATED */
|
||||
authentication_routes: 'Authentication routes',
|
||||
/** UNTRANSLATED */
|
||||
custom_rules_tip:
|
||||
"Here are two case scenarios:<ol><li>To only protect routes '/admin' and '/privacy' with authentication: ^/(admin|privacy)/.*</li><li>To exclude JPG images from authentication: ^(?!.*\\.jpg$).*$</li></ol>",
|
||||
/** UNTRANSLATED */
|
||||
authentication_routes_description:
|
||||
'Redirect your authentication button using the specified routes. Note: These routes are irreplaceable.',
|
||||
/** UNTRANSLATED */
|
||||
implement_jwt_verification: 'Implement JWT verification',
|
||||
/** UNTRANSLATED */
|
||||
implement_jwt_verification_description:
|
||||
'Configure JWT in your service for essential security communication. Follow the <a>JWT implementation guide</a>.',
|
||||
/** UNTRANSLATED */
|
||||
session_duration: 'Session duration (days)',
|
||||
/** UNTRANSLATED */
|
||||
try_it: 'Try it',
|
||||
branding: {
|
||||
/** UNTRANSLATED */
|
||||
name: 'Branding',
|
||||
|
|
Loading…
Add table
Reference in a new issue