@ory/elements-react 0.0.0-pr.7af5f16 → 0.0.0-pr.827df319
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +104 -0
- package/README.md +253 -4
- package/dist/index.d.mts +85 -48
- package/dist/index.d.ts +85 -48
- package/dist/index.js +744 -408
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +742 -408
- package/dist/index.mjs.map +1 -1
- package/dist/theme/default/index.css +12 -6
- package/dist/theme/default/index.css.map +1 -1
- package/dist/theme/default/index.js +3539 -3280
- package/dist/theme/default/index.js.map +1 -1
- package/dist/theme/default/index.mjs +3580 -3311
- package/dist/theme/default/index.mjs.map +1 -1
- package/package.json +8 -7
- package/tsconfig.json +2 -1
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { UiNodeGroupEnum, isUiNodeInputAttributes, isUiNodeAnchorAttributes, isUiNodeImageAttributes, isUiNodeScriptAttributes, FlowType,
|
|
2
|
-
import { createContext, useContext, useState, useMemo, useReducer,
|
|
1
|
+
import { UiNodeGroupEnum, isUiNodeInputAttributes, isUiNodeAnchorAttributes, isUiNodeImageAttributes, isUiNodeScriptAttributes, FlowType, getNodeId, Configuration, FrontendApi, isUiNodeTextAttributes, UiNodeInputAttributesTypeEnum, handleContinueWith, isResponseError as isResponseError$1, loginUrl, settingsUrl, registrationUrl, FetchError, ResponseError, recoveryUrl, instanceOfContinueWithRecoveryUi, verificationUrl as verificationUrl$1 } from '@ory/client-fetch';
|
|
2
|
+
import { createContext, useContext, useRef, useState, useMemo, useReducer, useEffect } from 'react';
|
|
3
3
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
4
4
|
import { useIntl, IntlProvider as IntlProvider$1 } from 'react-intl';
|
|
5
5
|
import { useFormContext, useForm, FormProvider } from 'react-hook-form';
|
|
@@ -48,13 +48,18 @@ var defaultNodeOrder = [
|
|
|
48
48
|
];
|
|
49
49
|
function defaultNodeSorter(a, b) {
|
|
50
50
|
var _a, _b;
|
|
51
|
+
const aIsCaptcha = a.group === "captcha";
|
|
52
|
+
const bIsCaptcha = b.group === "captcha";
|
|
53
|
+
const aIsSubmit = isUiNodeInputAttributes(a.attributes) && a.attributes.type === "submit";
|
|
54
|
+
const bIsSubmit = isUiNodeInputAttributes(b.attributes) && b.attributes.type === "submit";
|
|
55
|
+
if (aIsCaptcha && bIsSubmit) {
|
|
56
|
+
return -1;
|
|
57
|
+
}
|
|
58
|
+
if (bIsCaptcha && aIsSubmit) {
|
|
59
|
+
return 1;
|
|
60
|
+
}
|
|
51
61
|
const aGroupWeight = (_a = defaultNodeOrder.indexOf(a.group)) != null ? _a : 999;
|
|
52
62
|
const bGroupWeight = (_b = defaultNodeOrder.indexOf(b.group)) != null ? _b : 999;
|
|
53
|
-
if (b.group === "captcha" && isUiNodeInputAttributes(a.attributes) && a.attributes.type === "submit") {
|
|
54
|
-
return aGroupWeight - (bGroupWeight - 2);
|
|
55
|
-
} else if (a.group === "captcha" && isUiNodeInputAttributes(b.attributes) && b.attributes.type === "submit") {
|
|
56
|
-
return aGroupWeight - 2 - bGroupWeight;
|
|
57
|
-
}
|
|
58
63
|
return aGroupWeight - bGroupWeight;
|
|
59
64
|
}
|
|
60
65
|
var defaultGroupOrder = [
|
|
@@ -92,28 +97,10 @@ function OryComponentProvider({
|
|
|
92
97
|
}
|
|
93
98
|
);
|
|
94
99
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
(node) => node.group === UiNodeGroupEnum.IdentifierFirst && "name" in node.attributes && node.attributes.name === "identifier" && node.attributes.type === "hidden"
|
|
100
|
-
) || flow.flowType === FlowType.Login && flow.flow.requested_aal === "aal2";
|
|
101
|
-
}
|
|
102
|
-
function removeSsoNodes(nodes) {
|
|
103
|
-
return nodes.filter(
|
|
104
|
-
(node) => !(node.group === UiNodeGroupEnum.Oidc || node.group === UiNodeGroupEnum.Saml)
|
|
105
|
-
);
|
|
106
|
-
}
|
|
107
|
-
function getFinalNodes(uniqueGroups, selectedGroup) {
|
|
108
|
-
var _a, _b, _c, _d;
|
|
109
|
-
const selectedNodes = selectedGroup ? (_a = uniqueGroups[selectedGroup]) != null ? _a : [] : [];
|
|
110
|
-
return [
|
|
111
|
-
...(_b = uniqueGroups == null ? void 0 : uniqueGroups.identifier_first) != null ? _b : [],
|
|
112
|
-
...(_c = uniqueGroups == null ? void 0 : uniqueGroups.default) != null ? _c : [],
|
|
113
|
-
...(_d = uniqueGroups == null ? void 0 : uniqueGroups.captcha) != null ? _d : []
|
|
114
|
-
].flat().filter(
|
|
115
|
-
(node) => "type" in node.attributes && node.attributes.type === "hidden"
|
|
116
|
-
).concat(selectedNodes);
|
|
100
|
+
|
|
101
|
+
// src/theme/default/utils/form.ts
|
|
102
|
+
function isGroupImmediateSubmit(group) {
|
|
103
|
+
return group === "code";
|
|
117
104
|
}
|
|
118
105
|
function triggerToWindowCall(trigger) {
|
|
119
106
|
if (!trigger) {
|
|
@@ -225,6 +212,93 @@ function useNodesGroups(nodes, { omit } = {}) {
|
|
|
225
212
|
var findNode = (nodes, opt) => nodes.find((n) => {
|
|
226
213
|
return n.attributes.node_type === opt.node_type && (opt.group instanceof RegExp ? n.group.match(opt.group) : n.group === opt.group) && (opt.name && n.attributes.node_type === "input" ? opt.name instanceof RegExp ? n.attributes.name.match(opt.name) : n.attributes.name === opt.name : !opt.name);
|
|
227
214
|
});
|
|
215
|
+
function useFunctionalNodes(nodes) {
|
|
216
|
+
return nodes.filter(
|
|
217
|
+
({ group }) => [
|
|
218
|
+
UiNodeGroupEnum.Default,
|
|
219
|
+
UiNodeGroupEnum.IdentifierFirst,
|
|
220
|
+
UiNodeGroupEnum.Profile,
|
|
221
|
+
UiNodeGroupEnum.Captcha
|
|
222
|
+
].includes(group)
|
|
223
|
+
);
|
|
224
|
+
}
|
|
225
|
+
function isUiNodeGroupEnum(method) {
|
|
226
|
+
return Object.values(UiNodeGroupEnum).includes(method);
|
|
227
|
+
}
|
|
228
|
+
function isSingleSignOnNode(node) {
|
|
229
|
+
return node.group === UiNodeGroupEnum.Oidc || node.group === UiNodeGroupEnum.Saml;
|
|
230
|
+
}
|
|
231
|
+
function hasSingleSignOnNodes(nodes) {
|
|
232
|
+
return nodes.some(isSingleSignOnNode);
|
|
233
|
+
}
|
|
234
|
+
function withoutSingleSignOnNodes(nodes) {
|
|
235
|
+
return nodes.filter((node) => !isSingleSignOnNode(node));
|
|
236
|
+
}
|
|
237
|
+
function isNodeVisible(node) {
|
|
238
|
+
if (isUiNodeScriptAttributes(node.attributes)) {
|
|
239
|
+
return false;
|
|
240
|
+
} else if (isUiNodeInputAttributes(node.attributes)) {
|
|
241
|
+
if (node.attributes.type === "hidden") {
|
|
242
|
+
return false;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
return true;
|
|
246
|
+
}
|
|
247
|
+
function useNodeGroupsWithVisibleNodes(nodes) {
|
|
248
|
+
return useMemo(() => {
|
|
249
|
+
var _a, _b;
|
|
250
|
+
const groups = {};
|
|
251
|
+
const groupRetained = {};
|
|
252
|
+
for (const node of nodes) {
|
|
253
|
+
const groupNodes = (_a = groups[node.group]) != null ? _a : [];
|
|
254
|
+
const groupCount = (_b = groupRetained[node.group]) != null ? _b : 0;
|
|
255
|
+
groupNodes.push(node);
|
|
256
|
+
groups[node.group] = groupNodes;
|
|
257
|
+
if (!isNodeVisible(node)) {
|
|
258
|
+
continue;
|
|
259
|
+
}
|
|
260
|
+
groupRetained[node.group] = groupCount + 1;
|
|
261
|
+
}
|
|
262
|
+
const finalGroups = {};
|
|
263
|
+
for (const [group, count] of Object.entries(groupRetained)) {
|
|
264
|
+
if (count > 0) {
|
|
265
|
+
finalGroups[group] = groups[group];
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
return finalGroups;
|
|
269
|
+
}, [nodes]);
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
// src/components/card/two-step/utils.ts
|
|
273
|
+
function isChoosingMethod(flow) {
|
|
274
|
+
return flow.flow.ui.nodes.some(
|
|
275
|
+
(node) => "name" in node.attributes && node.attributes.name === "screen" && "value" in node.attributes && node.attributes.value === "previous"
|
|
276
|
+
) || flow.flow.ui.nodes.some(
|
|
277
|
+
(node) => node.group === UiNodeGroupEnum.IdentifierFirst && "name" in node.attributes && node.attributes.name === "identifier" && node.attributes.type === "hidden"
|
|
278
|
+
) || flow.flowType === FlowType.Login && flow.flow.requested_aal === "aal2";
|
|
279
|
+
}
|
|
280
|
+
function getFinalNodes(uniqueGroups, selectedGroup) {
|
|
281
|
+
var _a, _b, _c, _d;
|
|
282
|
+
const selectedNodes = selectedGroup ? (_a = uniqueGroups[selectedGroup]) != null ? _a : [] : [];
|
|
283
|
+
return [
|
|
284
|
+
...(_b = uniqueGroups == null ? void 0 : uniqueGroups.identifier_first) != null ? _b : [],
|
|
285
|
+
...(_c = uniqueGroups == null ? void 0 : uniqueGroups.default) != null ? _c : [],
|
|
286
|
+
...(_d = uniqueGroups == null ? void 0 : uniqueGroups.captcha) != null ? _d : []
|
|
287
|
+
].flat().filter(
|
|
288
|
+
(node) => "type" in node.attributes && node.attributes.type === "hidden"
|
|
289
|
+
).concat(selectedNodes);
|
|
290
|
+
}
|
|
291
|
+
var handleAfterFormSubmit = (dispatchFormState) => (method) => {
|
|
292
|
+
if (typeof method !== "string" || !isUiNodeGroupEnum(method)) {
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
if (isGroupImmediateSubmit(method)) {
|
|
296
|
+
dispatchFormState({
|
|
297
|
+
type: "action_select_method",
|
|
298
|
+
method
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
};
|
|
228
302
|
|
|
229
303
|
// src/context/form-state.ts
|
|
230
304
|
function findMethodWithMessage(nodes) {
|
|
@@ -246,9 +320,9 @@ function parseStateFromFlow(flow) {
|
|
|
246
320
|
return { current: "method_active", method: "code" };
|
|
247
321
|
} else if (methodWithMessage) {
|
|
248
322
|
return { current: "method_active", method: methodWithMessage.group };
|
|
249
|
-
} else if (flow.flow.
|
|
250
|
-
|
|
251
|
-
)) {
|
|
323
|
+
} else if ((_a = flow.flow.ui.messages) == null ? void 0 : _a.some((m) => m.id === 1010016)) {
|
|
324
|
+
return { current: "select_method" };
|
|
325
|
+
} else if (flow.flow.active && !["default", "identifier_first"].includes(flow.flow.active)) {
|
|
252
326
|
return { current: "method_active", method: flow.flow.active };
|
|
253
327
|
} else if (isChoosingMethod(flow)) {
|
|
254
328
|
const authMethods = nodesToAuthMethodGroups(flow.flow.ui.nodes);
|
|
@@ -256,8 +330,6 @@ function parseStateFromFlow(flow) {
|
|
|
256
330
|
return { current: "method_active", method: authMethods[0] };
|
|
257
331
|
}
|
|
258
332
|
return { current: "select_method" };
|
|
259
|
-
} else if ((_a = flow.flow.ui.messages) == null ? void 0 : _a.some((m) => m.id === 1010016)) {
|
|
260
|
-
return { current: "select_method" };
|
|
261
333
|
}
|
|
262
334
|
return { current: "provide_identifier" };
|
|
263
335
|
}
|
|
@@ -286,14 +358,20 @@ function useFormStateReducer(flow) {
|
|
|
286
358
|
const formStateReducer = (state, action2) => {
|
|
287
359
|
switch (action2.type) {
|
|
288
360
|
case "action_flow_update": {
|
|
289
|
-
if (selectedMethod)
|
|
361
|
+
if (selectedMethod) {
|
|
290
362
|
return { current: "method_active", method: selectedMethod };
|
|
363
|
+
}
|
|
291
364
|
return parseStateFromFlow(action2.flow);
|
|
292
365
|
}
|
|
293
366
|
case "action_select_method": {
|
|
294
367
|
setSelectedMethod(action2.method);
|
|
295
368
|
return { current: "method_active", method: action2.method };
|
|
296
369
|
}
|
|
370
|
+
case "action_clear_active_method": {
|
|
371
|
+
return {
|
|
372
|
+
current: "select_method"
|
|
373
|
+
};
|
|
374
|
+
}
|
|
297
375
|
}
|
|
298
376
|
return state;
|
|
299
377
|
};
|
|
@@ -332,6 +410,110 @@ function OryFlowProvider({
|
|
|
332
410
|
}
|
|
333
411
|
);
|
|
334
412
|
}
|
|
413
|
+
|
|
414
|
+
// src/client/config.ts
|
|
415
|
+
function isProduction() {
|
|
416
|
+
var _a, _b;
|
|
417
|
+
return ["production", "prod"].indexOf(
|
|
418
|
+
(_b = (_a = process.env.VERCEL_ENV) != null ? _a : process.env.NODE_ENV) != null ? _b : ""
|
|
419
|
+
) > -1;
|
|
420
|
+
}
|
|
421
|
+
function frontendClient(sdkUrl, opts = {}) {
|
|
422
|
+
const config = new Configuration({
|
|
423
|
+
...opts,
|
|
424
|
+
basePath: sdkUrl,
|
|
425
|
+
credentials: "include",
|
|
426
|
+
headers: {
|
|
427
|
+
Accept: "application/json",
|
|
428
|
+
...opts.headers
|
|
429
|
+
}
|
|
430
|
+
});
|
|
431
|
+
return new FrontendApi(config);
|
|
432
|
+
}
|
|
433
|
+
var defaultProject = {
|
|
434
|
+
name: "Ory",
|
|
435
|
+
registration_enabled: true,
|
|
436
|
+
verification_enabled: true,
|
|
437
|
+
recovery_enabled: true,
|
|
438
|
+
recovery_ui_url: "/ui/recovery",
|
|
439
|
+
registration_ui_url: "/ui/registration",
|
|
440
|
+
verification_ui_url: "/ui/verification",
|
|
441
|
+
login_ui_url: "/ui/login",
|
|
442
|
+
settings_ui_url: "/ui/settings",
|
|
443
|
+
default_redirect_url: "/ui/welcome",
|
|
444
|
+
error_ui_url: "/ui/error",
|
|
445
|
+
default_locale: "en",
|
|
446
|
+
locale_behavior: "force_default"
|
|
447
|
+
};
|
|
448
|
+
function useOryConfiguration() {
|
|
449
|
+
const configCtx = useContext(OryConfigurationContext);
|
|
450
|
+
return {
|
|
451
|
+
sdk: {
|
|
452
|
+
...configCtx.sdk,
|
|
453
|
+
frontend: frontendClient(configCtx.sdk.url, configCtx.sdk.options)
|
|
454
|
+
},
|
|
455
|
+
project: {
|
|
456
|
+
...configCtx.project
|
|
457
|
+
}
|
|
458
|
+
};
|
|
459
|
+
}
|
|
460
|
+
var OryConfigurationContext = createContext({
|
|
461
|
+
sdk: computeSdkConfig({}),
|
|
462
|
+
project: defaultProject
|
|
463
|
+
});
|
|
464
|
+
function OryConfigurationProvider({
|
|
465
|
+
children,
|
|
466
|
+
sdk: initialConfig,
|
|
467
|
+
project
|
|
468
|
+
}) {
|
|
469
|
+
const configRef = useRef({
|
|
470
|
+
sdk: computeSdkConfig(initialConfig),
|
|
471
|
+
project: {
|
|
472
|
+
...defaultProject,
|
|
473
|
+
...project
|
|
474
|
+
}
|
|
475
|
+
});
|
|
476
|
+
return /* @__PURE__ */ jsx(OryConfigurationContext.Provider, { value: configRef.current, children });
|
|
477
|
+
}
|
|
478
|
+
function computeSdkConfig(config) {
|
|
479
|
+
if ((config == null ? void 0 : config.url) && typeof config.url === "string") {
|
|
480
|
+
console.debug("Using sdk url from config");
|
|
481
|
+
return {
|
|
482
|
+
url: config.url.replace(/\/$/, ""),
|
|
483
|
+
options: config.options || {}
|
|
484
|
+
};
|
|
485
|
+
}
|
|
486
|
+
return {
|
|
487
|
+
url: getSDKUrl(),
|
|
488
|
+
options: (config == null ? void 0 : config.options) || {}
|
|
489
|
+
};
|
|
490
|
+
}
|
|
491
|
+
function getSDKUrl() {
|
|
492
|
+
var _a;
|
|
493
|
+
if (typeof process !== "undefined" && process.versions && process.versions.node) {
|
|
494
|
+
if (isProduction()) {
|
|
495
|
+
const sdkUrl = (_a = process.env["NEXT_PUBLIC_ORY_SDK_URL"]) != null ? _a : process.env["ORY_SDK_URL"];
|
|
496
|
+
if (!sdkUrl) {
|
|
497
|
+
throw new Error(
|
|
498
|
+
"Unable to determine SDK URL. Please set NEXT_PUBLIC_ORY_SDK_URL and/or ORY_SDK_URL in production environments."
|
|
499
|
+
);
|
|
500
|
+
}
|
|
501
|
+
return sdkUrl.replace(/\/$/, "");
|
|
502
|
+
} else {
|
|
503
|
+
if (process.env["__NEXT_PRIVATE_ORIGIN"]) {
|
|
504
|
+
return process.env["__NEXT_PRIVATE_ORIGIN"].replace(/\/$/, "");
|
|
505
|
+
} else if (process.env["VERCEL_URL"]) {
|
|
506
|
+
return `https://${process.env["VERCEL_URL"]}`.replace(/\/$/, "");
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
if (typeof window !== "undefined") {
|
|
511
|
+
return window.location.origin;
|
|
512
|
+
}
|
|
513
|
+
throw new Error(
|
|
514
|
+
"Unable to determine SDK URL. Please set NEXT_PUBLIC_ORY_SDK_URL and/or ORY_SDK_URL or supply the sdk.url parameter in the Ory configuration."
|
|
515
|
+
);
|
|
516
|
+
}
|
|
335
517
|
function mergeTranslations(customTranslations) {
|
|
336
518
|
return Object.keys(customTranslations).reduce((acc, key) => {
|
|
337
519
|
acc[key] = { ...OryLocales[key], ...customTranslations[key] };
|
|
@@ -361,17 +543,18 @@ var IntlProvider = ({
|
|
|
361
543
|
function OryProvider({
|
|
362
544
|
children,
|
|
363
545
|
components: Components,
|
|
546
|
+
config,
|
|
364
547
|
...oryFlowProps
|
|
365
548
|
}) {
|
|
366
549
|
var _a, _b, _c;
|
|
367
|
-
return /* @__PURE__ */ jsx(
|
|
550
|
+
return /* @__PURE__ */ jsx(OryConfigurationProvider, { sdk: config.sdk, project: config.project, children: /* @__PURE__ */ jsx(
|
|
368
551
|
IntlProvider,
|
|
369
552
|
{
|
|
370
|
-
locale: (_b = (_a =
|
|
371
|
-
customTranslations: (_c =
|
|
553
|
+
locale: (_b = (_a = config.intl) == null ? void 0 : _a.locale) != null ? _b : "en",
|
|
554
|
+
customTranslations: (_c = config.intl) == null ? void 0 : _c.customTranslations,
|
|
372
555
|
children: /* @__PURE__ */ jsx(OryFlowProvider, { ...oryFlowProps, children: /* @__PURE__ */ jsx(OryComponentProvider, { components: Components, children }) })
|
|
373
556
|
}
|
|
374
|
-
);
|
|
557
|
+
) });
|
|
375
558
|
}
|
|
376
559
|
function OryCardHeader() {
|
|
377
560
|
const { Card } = useComponents();
|
|
@@ -491,31 +674,143 @@ function OryCardContent({ children }) {
|
|
|
491
674
|
return /* @__PURE__ */ jsx(Card.Content, { children });
|
|
492
675
|
}
|
|
493
676
|
|
|
494
|
-
// src/theme/default/utils/form.ts
|
|
495
|
-
function isGroupImmediateSubmit(group) {
|
|
496
|
-
return group === "code";
|
|
497
|
-
}
|
|
498
|
-
function frontendClient(sdkUrl, opts = {}) {
|
|
499
|
-
const config = new Configuration({
|
|
500
|
-
...opts,
|
|
501
|
-
basePath: sdkUrl,
|
|
502
|
-
headers: {
|
|
503
|
-
Accept: "application/json",
|
|
504
|
-
...opts.headers
|
|
505
|
-
}
|
|
506
|
-
});
|
|
507
|
-
return new FrontendApi(config);
|
|
508
|
-
}
|
|
509
|
-
|
|
510
677
|
// src/util/internal.ts
|
|
511
678
|
function replaceWindowFlowId(flow) {
|
|
512
679
|
const url = new URL(window.location.href);
|
|
513
680
|
url.searchParams.set("flow", flow);
|
|
514
681
|
window.location.href = url.toString();
|
|
515
682
|
}
|
|
683
|
+
function isGenericErrorResponse(response) {
|
|
684
|
+
return typeof response === "object" && !!response && "error" in response && typeof response.error === "object" && !!response.error && "id" in response.error;
|
|
685
|
+
}
|
|
686
|
+
function isNeedsPrivilegedSessionError(response) {
|
|
687
|
+
return isGenericErrorResponse(response) && response.error.id === "session_refresh_required";
|
|
688
|
+
}
|
|
689
|
+
function isSelfServiceFlowExpiredError(response) {
|
|
690
|
+
return isGenericErrorResponse(response) && response.error.id === "self_service_flow_expired";
|
|
691
|
+
}
|
|
692
|
+
function isBrowserLocationChangeRequired(response) {
|
|
693
|
+
return isGenericErrorResponse(response) && isGenericErrorResponse(response) && response.error.id === "browser_location_change_required";
|
|
694
|
+
}
|
|
695
|
+
function isAddressNotVerified(response) {
|
|
696
|
+
return isGenericErrorResponse(response) && response.error.id === "session_verified_address_required";
|
|
697
|
+
}
|
|
698
|
+
function isCsrfError(response) {
|
|
699
|
+
return isGenericErrorResponse(response) && response.error.id === "security_csrf_violation";
|
|
700
|
+
}
|
|
701
|
+
var isResponseError = (err) => {
|
|
702
|
+
if (err instanceof ResponseError) {
|
|
703
|
+
return true;
|
|
704
|
+
}
|
|
705
|
+
return typeof err === "object" && !!err && "name" in err && err.name === "ResponseError";
|
|
706
|
+
};
|
|
707
|
+
var isFetchError = (err) => {
|
|
708
|
+
return err instanceof FetchError;
|
|
709
|
+
};
|
|
710
|
+
|
|
711
|
+
// src/util/sdk-helpers/urlHelpers.ts
|
|
712
|
+
var verificationUrl = (config) => config.sdk.url + "/self-service/verification/browser";
|
|
713
|
+
var handleFlowError = (opts) => async (err) => {
|
|
714
|
+
var _a;
|
|
715
|
+
if (!isResponseError(err)) {
|
|
716
|
+
if (isFetchError(err)) {
|
|
717
|
+
throw new FetchError(
|
|
718
|
+
err,
|
|
719
|
+
"Unable to call the API endpoint. Ensure that CORS is set up correctly and that you have provided a valid SDK URL to Ory Elements."
|
|
720
|
+
);
|
|
721
|
+
}
|
|
722
|
+
throw err;
|
|
723
|
+
}
|
|
724
|
+
const contentType = err.response.headers.get("content-type") || "";
|
|
725
|
+
if (contentType.includes("application/json")) {
|
|
726
|
+
const body = await toBody(err.response);
|
|
727
|
+
if (isSelfServiceFlowExpiredError(body)) {
|
|
728
|
+
opts.onRestartFlow(body.use_flow_id);
|
|
729
|
+
return;
|
|
730
|
+
} else if (isAddressNotVerified(body)) {
|
|
731
|
+
for (const continueWith of ((_a = body.error.details) == null ? void 0 : _a.continue_with) || []) {
|
|
732
|
+
if (continueWith.action === "show_verification_ui" && continueWith.flow.url) {
|
|
733
|
+
opts.onRedirect(continueWith.flow.url, true);
|
|
734
|
+
return;
|
|
735
|
+
}
|
|
736
|
+
}
|
|
737
|
+
opts.onRedirect(verificationUrl(opts.config), true);
|
|
738
|
+
return;
|
|
739
|
+
} else if (isBrowserLocationChangeRequired(body) && body.redirect_browser_to) {
|
|
740
|
+
opts.onRedirect(body.redirect_browser_to, true);
|
|
741
|
+
return;
|
|
742
|
+
} else if (isNeedsPrivilegedSessionError(body) && body.redirect_browser_to) {
|
|
743
|
+
opts.onRedirect(body.redirect_browser_to, true);
|
|
744
|
+
return;
|
|
745
|
+
} else if (isCsrfError(body)) {
|
|
746
|
+
opts.onRestartFlow();
|
|
747
|
+
return;
|
|
748
|
+
}
|
|
749
|
+
switch (err.response.status) {
|
|
750
|
+
case 404:
|
|
751
|
+
opts.onRestartFlow();
|
|
752
|
+
return;
|
|
753
|
+
case 410:
|
|
754
|
+
opts.onRestartFlow();
|
|
755
|
+
return;
|
|
756
|
+
case 400:
|
|
757
|
+
return opts.onValidationError(
|
|
758
|
+
await err.response.json()
|
|
759
|
+
);
|
|
760
|
+
case 403:
|
|
761
|
+
opts.onRestartFlow();
|
|
762
|
+
return;
|
|
763
|
+
case 422: {
|
|
764
|
+
throw new ResponseError(
|
|
765
|
+
err.response,
|
|
766
|
+
"The API returned an error code indicating a required redirect, but the SDK is outdated and does not know how to handle the action. Received response: " + await err.response.json()
|
|
767
|
+
);
|
|
768
|
+
}
|
|
769
|
+
}
|
|
770
|
+
throw new ResponseError(
|
|
771
|
+
err.response,
|
|
772
|
+
"The Ory API endpoint returned a response code the SDK does not know how to handle. Please check the network tab for more information. Received response: " + await err.response.json()
|
|
773
|
+
);
|
|
774
|
+
} else if (
|
|
775
|
+
// Not a JSON response? If it's a text response we will return an error informing the user that the response is not JSON.
|
|
776
|
+
contentType.includes("text/") || contentType.includes("html") || contentType.includes("xml")
|
|
777
|
+
) {
|
|
778
|
+
await logResponseError(err.response, true);
|
|
779
|
+
throw new ResponseError(
|
|
780
|
+
err.response,
|
|
781
|
+
`The Ory API endpoint returned an unexpected HTML or text response. Check your console output for details.`
|
|
782
|
+
);
|
|
783
|
+
}
|
|
784
|
+
await logResponseError(err.response, false);
|
|
785
|
+
throw new ResponseError(
|
|
786
|
+
err.response,
|
|
787
|
+
"The Ory API endpoint returned unexpected content type `" + contentType + "`. Check your console output for details."
|
|
788
|
+
);
|
|
789
|
+
};
|
|
790
|
+
async function toBody(response) {
|
|
791
|
+
try {
|
|
792
|
+
return await response.clone().json();
|
|
793
|
+
} catch (e) {
|
|
794
|
+
await logResponseError(response, true, [e]);
|
|
795
|
+
throw new ResponseError(
|
|
796
|
+
response,
|
|
797
|
+
"Unable to decode API response using JSON."
|
|
798
|
+
);
|
|
799
|
+
}
|
|
800
|
+
}
|
|
801
|
+
async function logResponseError(response, printBody, wrap) {
|
|
802
|
+
console.error("Unable to decode API response", {
|
|
803
|
+
response: {
|
|
804
|
+
status: response.status,
|
|
805
|
+
headers: Object.fromEntries(response.headers.entries()),
|
|
806
|
+
body: printBody ? await response.clone().text() : void 0
|
|
807
|
+
},
|
|
808
|
+
errors: wrap
|
|
809
|
+
});
|
|
810
|
+
}
|
|
516
811
|
|
|
517
812
|
// src/util/onSubmitLogin.ts
|
|
518
|
-
async function onSubmitLogin({
|
|
813
|
+
async function onSubmitLogin({ flow }, config, {
|
|
519
814
|
setFlowContainer,
|
|
520
815
|
body,
|
|
521
816
|
onRedirect
|
|
@@ -544,27 +839,21 @@ async function onSubmitLogin({ config, flow }, {
|
|
|
544
839
|
},
|
|
545
840
|
onValidationError: (body2) => {
|
|
546
841
|
setFlowContainer({
|
|
547
|
-
config,
|
|
548
842
|
flow: body2,
|
|
549
843
|
flowType: FlowType.Login
|
|
550
844
|
});
|
|
551
845
|
},
|
|
552
|
-
onRedirect
|
|
846
|
+
onRedirect,
|
|
847
|
+
config
|
|
553
848
|
})
|
|
554
849
|
);
|
|
555
850
|
}
|
|
556
|
-
async function onSubmitRecovery({
|
|
851
|
+
async function onSubmitRecovery({ flow }, config, {
|
|
557
852
|
setFlowContainer,
|
|
558
853
|
body,
|
|
559
854
|
onRedirect
|
|
560
855
|
}) {
|
|
561
|
-
|
|
562
|
-
if (!config.sdk.url) {
|
|
563
|
-
throw new Error(
|
|
564
|
-
`Please supply your Ory Network SDK url to the Ory Elements configuration.`
|
|
565
|
-
);
|
|
566
|
-
}
|
|
567
|
-
await frontendClient(config.sdk.url, (_a = config.sdk.options) != null ? _a : {}).updateRecoveryFlowRaw({
|
|
856
|
+
await config.sdk.frontend.updateRecoveryFlowRaw({
|
|
568
857
|
flow: flow.id,
|
|
569
858
|
updateRecoveryFlowBody: body
|
|
570
859
|
}).then(async (res) => {
|
|
@@ -577,8 +866,7 @@ async function onSubmitRecovery({ config, flow }, {
|
|
|
577
866
|
}
|
|
578
867
|
setFlowContainer({
|
|
579
868
|
flow: flow2,
|
|
580
|
-
flowType: FlowType.Recovery
|
|
581
|
-
config
|
|
869
|
+
flowType: FlowType.Recovery
|
|
582
870
|
});
|
|
583
871
|
}).catch(
|
|
584
872
|
handleFlowError({
|
|
@@ -596,12 +884,12 @@ async function onSubmitRecovery({ config, flow }, {
|
|
|
596
884
|
} else {
|
|
597
885
|
setFlowContainer({
|
|
598
886
|
flow: body2,
|
|
599
|
-
flowType: FlowType.Recovery
|
|
600
|
-
config
|
|
887
|
+
flowType: FlowType.Recovery
|
|
601
888
|
});
|
|
602
889
|
}
|
|
603
890
|
},
|
|
604
|
-
onRedirect
|
|
891
|
+
onRedirect,
|
|
892
|
+
config
|
|
605
893
|
})
|
|
606
894
|
);
|
|
607
895
|
}
|
|
@@ -618,19 +906,12 @@ function handleContinueWithRecoveryUIError(error, config, onRedirect) {
|
|
|
618
906
|
}
|
|
619
907
|
onRedirect(recoveryUrl(config), true);
|
|
620
908
|
}
|
|
621
|
-
async function onSubmitRegistration({
|
|
909
|
+
async function onSubmitRegistration({ flow }, config, {
|
|
622
910
|
setFlowContainer,
|
|
623
911
|
body,
|
|
624
912
|
onRedirect
|
|
625
913
|
}) {
|
|
626
|
-
|
|
627
|
-
if (!config.sdk.url) {
|
|
628
|
-
throw new Error(
|
|
629
|
-
`Please supply your Ory Network SDK url to the Ory Elements configuration.`
|
|
630
|
-
);
|
|
631
|
-
}
|
|
632
|
-
const client = frontendClient(config.sdk.url, (_a = config.sdk.options) != null ? _a : {});
|
|
633
|
-
await client.updateRegistrationFlowRaw({
|
|
914
|
+
await config.sdk.frontend.updateRegistrationFlowRaw({
|
|
634
915
|
flow: flow.id,
|
|
635
916
|
updateRegistrationFlowBody: body
|
|
636
917
|
}).then(async (res) => {
|
|
@@ -654,27 +935,20 @@ async function onSubmitRegistration({ config, flow }, {
|
|
|
654
935
|
onValidationError: (body2) => {
|
|
655
936
|
setFlowContainer({
|
|
656
937
|
flow: body2,
|
|
657
|
-
flowType: FlowType.Registration
|
|
658
|
-
config
|
|
938
|
+
flowType: FlowType.Registration
|
|
659
939
|
});
|
|
660
940
|
},
|
|
661
|
-
onRedirect
|
|
941
|
+
onRedirect,
|
|
942
|
+
config
|
|
662
943
|
})
|
|
663
944
|
);
|
|
664
945
|
}
|
|
665
|
-
async function onSubmitSettings({
|
|
946
|
+
async function onSubmitSettings({ flow }, config, {
|
|
666
947
|
setFlowContainer,
|
|
667
948
|
body,
|
|
668
949
|
onRedirect
|
|
669
950
|
}) {
|
|
670
|
-
|
|
671
|
-
if (!config.sdk.url) {
|
|
672
|
-
throw new Error(
|
|
673
|
-
`Please supply your Ory Network SDK url to the Ory Elements configuration.`
|
|
674
|
-
);
|
|
675
|
-
}
|
|
676
|
-
const client = frontendClient(config.sdk.url, (_a = config.sdk.options) != null ? _a : {});
|
|
677
|
-
await client.updateSettingsFlowRaw({
|
|
951
|
+
await config.sdk.frontend.updateSettingsFlowRaw({
|
|
678
952
|
flow: flow.id,
|
|
679
953
|
updateSettingsFlowBody: body
|
|
680
954
|
}).then(async (res) => {
|
|
@@ -687,8 +961,7 @@ async function onSubmitSettings({ config, flow }, {
|
|
|
687
961
|
}
|
|
688
962
|
setFlowContainer({
|
|
689
963
|
flow: body2,
|
|
690
|
-
flowType: FlowType.Settings
|
|
691
|
-
config
|
|
964
|
+
flowType: FlowType.Settings
|
|
692
965
|
});
|
|
693
966
|
}).catch(
|
|
694
967
|
handleFlowError({
|
|
@@ -702,14 +975,14 @@ async function onSubmitSettings({ config, flow }, {
|
|
|
702
975
|
onValidationError: (body2) => {
|
|
703
976
|
setFlowContainer({
|
|
704
977
|
flow: body2,
|
|
705
|
-
flowType: FlowType.Settings
|
|
706
|
-
config
|
|
978
|
+
flowType: FlowType.Settings
|
|
707
979
|
});
|
|
708
980
|
},
|
|
709
|
-
onRedirect
|
|
981
|
+
onRedirect,
|
|
982
|
+
config
|
|
710
983
|
})
|
|
711
984
|
).catch((err) => {
|
|
712
|
-
if (isResponseError(err)) {
|
|
985
|
+
if (isResponseError$1(err)) {
|
|
713
986
|
if (err.response.status === 401) {
|
|
714
987
|
return onRedirect(
|
|
715
988
|
loginUrl(config) + "?return_to=" + settingsUrl(config),
|
|
@@ -720,25 +993,18 @@ async function onSubmitSettings({ config, flow }, {
|
|
|
720
993
|
}
|
|
721
994
|
});
|
|
722
995
|
}
|
|
723
|
-
async function onSubmitVerification({
|
|
996
|
+
async function onSubmitVerification({ flow }, config, {
|
|
724
997
|
setFlowContainer,
|
|
725
998
|
body,
|
|
726
999
|
onRedirect
|
|
727
1000
|
}) {
|
|
728
|
-
|
|
729
|
-
if (!config.sdk.url) {
|
|
730
|
-
throw new Error(
|
|
731
|
-
`Please supply your Ory Network SDK URL to the Ory Elements configuration.`
|
|
732
|
-
);
|
|
733
|
-
}
|
|
734
|
-
await frontendClient(config.sdk.url, (_a = config.sdk.options) != null ? _a : {}).updateVerificationFlowRaw({
|
|
1001
|
+
await config.sdk.frontend.updateVerificationFlowRaw({
|
|
735
1002
|
flow: flow.id,
|
|
736
1003
|
updateVerificationFlowBody: body
|
|
737
1004
|
}).then(
|
|
738
1005
|
async (res) => setFlowContainer({
|
|
739
1006
|
flow: await res.value(),
|
|
740
|
-
flowType: FlowType.Verification
|
|
741
|
-
config
|
|
1007
|
+
flowType: FlowType.Verification
|
|
742
1008
|
})
|
|
743
1009
|
).catch(
|
|
744
1010
|
handleFlowError({
|
|
@@ -746,17 +1012,17 @@ async function onSubmitVerification({ config, flow }, {
|
|
|
746
1012
|
if (useFlowId) {
|
|
747
1013
|
replaceWindowFlowId(useFlowId);
|
|
748
1014
|
} else {
|
|
749
|
-
onRedirect(verificationUrl(config), true);
|
|
1015
|
+
onRedirect(verificationUrl$1(config), true);
|
|
750
1016
|
}
|
|
751
1017
|
},
|
|
752
1018
|
onValidationError: (body2) => {
|
|
753
1019
|
setFlowContainer({
|
|
754
1020
|
flow: body2,
|
|
755
|
-
flowType: FlowType.Verification
|
|
756
|
-
config
|
|
1021
|
+
flowType: FlowType.Verification
|
|
757
1022
|
});
|
|
758
1023
|
},
|
|
759
|
-
onRedirect
|
|
1024
|
+
onRedirect,
|
|
1025
|
+
config
|
|
760
1026
|
})
|
|
761
1027
|
);
|
|
762
1028
|
}
|
|
@@ -766,6 +1032,7 @@ var supportsSelectAccountPrompt = ["google", "github"];
|
|
|
766
1032
|
function useOryFormSubmit(onAfterSubmit) {
|
|
767
1033
|
const flowContainer = useOryFlow();
|
|
768
1034
|
const methods = useFormContext();
|
|
1035
|
+
const config = useOryConfiguration();
|
|
769
1036
|
const handleSuccess = (flow) => {
|
|
770
1037
|
flowContainer.setFlowContainer(flow);
|
|
771
1038
|
methods.reset(computeDefaultValues(flow.flow.ui.nodes));
|
|
@@ -782,7 +1049,7 @@ function useOryFormSubmit(onAfterSubmit) {
|
|
|
782
1049
|
if (submitData.method === "code" && data.code) {
|
|
783
1050
|
submitData.resend = "";
|
|
784
1051
|
}
|
|
785
|
-
await onSubmitLogin(flowContainer, {
|
|
1052
|
+
await onSubmitLogin(flowContainer, config, {
|
|
786
1053
|
onRedirect,
|
|
787
1054
|
setFlowContainer: handleSuccess,
|
|
788
1055
|
body: submitData
|
|
@@ -796,7 +1063,7 @@ function useOryFormSubmit(onAfterSubmit) {
|
|
|
796
1063
|
if (submitData.method === "code" && submitData.code) {
|
|
797
1064
|
submitData.resend = "";
|
|
798
1065
|
}
|
|
799
|
-
await onSubmitRegistration(flowContainer, {
|
|
1066
|
+
await onSubmitRegistration(flowContainer, config, {
|
|
800
1067
|
onRedirect,
|
|
801
1068
|
setFlowContainer: handleSuccess,
|
|
802
1069
|
body: submitData
|
|
@@ -804,7 +1071,7 @@ function useOryFormSubmit(onAfterSubmit) {
|
|
|
804
1071
|
break;
|
|
805
1072
|
}
|
|
806
1073
|
case FlowType.Verification:
|
|
807
|
-
await onSubmitVerification(flowContainer, {
|
|
1074
|
+
await onSubmitVerification(flowContainer, config, {
|
|
808
1075
|
onRedirect,
|
|
809
1076
|
setFlowContainer: handleSuccess,
|
|
810
1077
|
body: data
|
|
@@ -817,7 +1084,7 @@ function useOryFormSubmit(onAfterSubmit) {
|
|
|
817
1084
|
if (data.code) {
|
|
818
1085
|
submitData.email = "";
|
|
819
1086
|
}
|
|
820
|
-
await onSubmitRecovery(flowContainer, {
|
|
1087
|
+
await onSubmitRecovery(flowContainer, config, {
|
|
821
1088
|
onRedirect,
|
|
822
1089
|
setFlowContainer: handleSuccess,
|
|
823
1090
|
body: submitData
|
|
@@ -845,7 +1112,7 @@ function useOryFormSubmit(onAfterSubmit) {
|
|
|
845
1112
|
if ("passkey_remove" in submitData) {
|
|
846
1113
|
submitData.method = "passkey";
|
|
847
1114
|
}
|
|
848
|
-
await onSubmitSettings(flowContainer, {
|
|
1115
|
+
await onSubmitSettings(flowContainer, config, {
|
|
849
1116
|
onRedirect,
|
|
850
1117
|
setFlowContainer: handleSuccess,
|
|
851
1118
|
body: submitData
|
|
@@ -892,6 +1159,9 @@ function OryForm({
|
|
|
892
1159
|
const onSubmit = useOryFormSubmit(onAfterSubmit);
|
|
893
1160
|
const hasMethods = flowContainer.flow.ui.nodes.some((node) => {
|
|
894
1161
|
if (isUiNodeInputAttributes(node.attributes)) {
|
|
1162
|
+
if (node.attributes.type === "hidden") {
|
|
1163
|
+
return false;
|
|
1164
|
+
}
|
|
895
1165
|
return node.attributes.name !== "csrf_token";
|
|
896
1166
|
} else if (isUiNodeAnchorAttributes(node.attributes)) {
|
|
897
1167
|
return true;
|
|
@@ -911,12 +1181,9 @@ function OryForm({
|
|
|
911
1181
|
}),
|
|
912
1182
|
type: "error"
|
|
913
1183
|
};
|
|
914
|
-
return /* @__PURE__ */
|
|
915
|
-
/* @__PURE__ */ jsx(Message.Root, { children: /* @__PURE__ */ jsx(Message.Content, { message: m }, m.id) }),
|
|
916
|
-
/* @__PURE__ */ jsx(OryCardFooter, {})
|
|
917
|
-
] });
|
|
1184
|
+
return /* @__PURE__ */ jsx("div", { "data-testid": dataTestId, children: /* @__PURE__ */ jsx(Message.Root, { children: /* @__PURE__ */ jsx(Message.Content, { message: m }, m.id) }) });
|
|
918
1185
|
}
|
|
919
|
-
if (flowContainer.flowType === FlowType.Login && flowContainer.formState.current === "method_active" && flowContainer.formState.method === "code") {
|
|
1186
|
+
if ((flowContainer.flowType === FlowType.Login || flowContainer.flowType === FlowType.Registration) && flowContainer.formState.current === "method_active" && flowContainer.formState.method === "code") {
|
|
920
1187
|
methods.setValue("method", "code");
|
|
921
1188
|
}
|
|
922
1189
|
return /* @__PURE__ */ jsx(
|
|
@@ -970,10 +1237,7 @@ var NodeInput = ({
|
|
|
970
1237
|
const isResendNode = ((_a = node.meta.label) == null ? void 0 : _a.id) === 1070008;
|
|
971
1238
|
const isScreenSelectionNode = "name" in node.attributes && node.attributes.name === "screen";
|
|
972
1239
|
const setFormValue = () => {
|
|
973
|
-
if (isResendNode || isScreenSelectionNode || node.group === UiNodeGroupEnum.Oauth2Consent) {
|
|
974
|
-
return;
|
|
975
|
-
}
|
|
976
|
-
if (attrs.value !== void 0) {
|
|
1240
|
+
if (attrs.value && !(isResendNode || isScreenSelectionNode || node.group === UiNodeGroupEnum.Oauth2Consent)) {
|
|
977
1241
|
setValue(attrs.name, attrs.value);
|
|
978
1242
|
}
|
|
979
1243
|
};
|
|
@@ -1015,7 +1279,20 @@ var NodeInput = ({
|
|
|
1015
1279
|
case UiNodeInputAttributesTypeEnum.Submit:
|
|
1016
1280
|
case UiNodeInputAttributesTypeEnum.Button:
|
|
1017
1281
|
if (isSocial) {
|
|
1018
|
-
return
|
|
1282
|
+
return /* @__PURE__ */ jsx(
|
|
1283
|
+
Node2.OidcButton,
|
|
1284
|
+
{
|
|
1285
|
+
node,
|
|
1286
|
+
attributes: attrs,
|
|
1287
|
+
onClick: () => {
|
|
1288
|
+
setValue(
|
|
1289
|
+
"provider",
|
|
1290
|
+
node.attributes.value
|
|
1291
|
+
);
|
|
1292
|
+
setValue("method", node.group);
|
|
1293
|
+
}
|
|
1294
|
+
}
|
|
1295
|
+
);
|
|
1019
1296
|
}
|
|
1020
1297
|
if (isResendNode || isScreenSelectionNode) {
|
|
1021
1298
|
return null;
|
|
@@ -1105,6 +1382,37 @@ var Node = ({ node, onClick }) => {
|
|
|
1105
1382
|
}
|
|
1106
1383
|
return null;
|
|
1107
1384
|
};
|
|
1385
|
+
function OryTwoStepCardStateMethodActive({
|
|
1386
|
+
formState
|
|
1387
|
+
}) {
|
|
1388
|
+
const { Form } = useComponents();
|
|
1389
|
+
const { flow, flowType, dispatchFormState } = useOryFlow();
|
|
1390
|
+
const { ui } = flow;
|
|
1391
|
+
const nodeSorter = useNodeSorter();
|
|
1392
|
+
const sortNodes = (a, b) => nodeSorter(a, b, { flowType });
|
|
1393
|
+
const groupsToShow = useNodeGroupsWithVisibleNodes(ui.nodes);
|
|
1394
|
+
const finalNodes = getFinalNodes(groupsToShow, formState.method);
|
|
1395
|
+
return /* @__PURE__ */ jsxs(OryCard, { children: [
|
|
1396
|
+
/* @__PURE__ */ jsx(OryCardHeader, {}),
|
|
1397
|
+
/* @__PURE__ */ jsxs(OryCardContent, { children: [
|
|
1398
|
+
/* @__PURE__ */ jsx(OryCardValidationMessages, {}),
|
|
1399
|
+
/* @__PURE__ */ jsx(
|
|
1400
|
+
OryForm,
|
|
1401
|
+
{
|
|
1402
|
+
"data-testid": `ory/form/methods/local`,
|
|
1403
|
+
onAfterSubmit: handleAfterFormSubmit(dispatchFormState),
|
|
1404
|
+
children: /* @__PURE__ */ jsxs(Form.Group, { children: [
|
|
1405
|
+
ui.nodes.filter(
|
|
1406
|
+
(n) => isUiNodeScriptAttributes(n.attributes) || n.group === UiNodeGroupEnum.Default || n.group === UiNodeGroupEnum.Profile
|
|
1407
|
+
).map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k)),
|
|
1408
|
+
finalNodes.sort(sortNodes).map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k))
|
|
1409
|
+
] })
|
|
1410
|
+
}
|
|
1411
|
+
)
|
|
1412
|
+
] }),
|
|
1413
|
+
/* @__PURE__ */ jsx(OryCardFooter, {})
|
|
1414
|
+
] });
|
|
1415
|
+
}
|
|
1108
1416
|
function OryFormOidcButtons() {
|
|
1109
1417
|
const {
|
|
1110
1418
|
flow: { ui }
|
|
@@ -1117,7 +1425,7 @@ function OryFormOidcButtons() {
|
|
|
1117
1425
|
if (filteredNodes.length === 0) {
|
|
1118
1426
|
return null;
|
|
1119
1427
|
}
|
|
1120
|
-
return /* @__PURE__ */ jsx(Form.OidcRoot, { nodes: filteredNodes, children: filteredNodes.map((node
|
|
1428
|
+
return /* @__PURE__ */ jsx(Form.OidcRoot, { nodes: filteredNodes, children: filteredNodes.map((node) => /* @__PURE__ */ jsx(
|
|
1121
1429
|
Node2.OidcButton,
|
|
1122
1430
|
{
|
|
1123
1431
|
node,
|
|
@@ -1130,13 +1438,15 @@ function OryFormOidcButtons() {
|
|
|
1130
1438
|
setValue("method", node.group);
|
|
1131
1439
|
}
|
|
1132
1440
|
},
|
|
1133
|
-
|
|
1441
|
+
getNodeId(node)
|
|
1134
1442
|
)) });
|
|
1135
1443
|
}
|
|
1136
1444
|
function OryFormSocialButtonsForm() {
|
|
1137
1445
|
const {
|
|
1138
|
-
flow: { ui }
|
|
1446
|
+
flow: { ui },
|
|
1447
|
+
formState
|
|
1139
1448
|
} = useOryFlow();
|
|
1449
|
+
console.log(formState);
|
|
1140
1450
|
const filteredNodes = ui.nodes.filter(
|
|
1141
1451
|
(node) => node.group === UiNodeGroupEnum.Saml || node.group === UiNodeGroupEnum.Oidc
|
|
1142
1452
|
);
|
|
@@ -1145,24 +1455,71 @@ function OryFormSocialButtonsForm() {
|
|
|
1145
1455
|
}
|
|
1146
1456
|
return /* @__PURE__ */ jsx(OryFormProvider, { children: /* @__PURE__ */ jsx(OryForm, { "data-testid": `ory/form/methods/oidc-saml`, children: /* @__PURE__ */ jsx(OryFormOidcButtons, {}) }) });
|
|
1147
1457
|
}
|
|
1148
|
-
function
|
|
1149
|
-
return Object.values(UiNodeGroupEnum).includes(method);
|
|
1150
|
-
}
|
|
1151
|
-
function OryTwoStepCard() {
|
|
1152
|
-
var _a, _b, _c, _d;
|
|
1458
|
+
function OryTwoStepCardStateProvideIdentifier() {
|
|
1153
1459
|
const { Form, Card } = useComponents();
|
|
1154
|
-
const {
|
|
1155
|
-
const { ui } = flow;
|
|
1460
|
+
const { flowType, flow, dispatchFormState } = useOryFlow();
|
|
1156
1461
|
const nodeSorter = useNodeSorter();
|
|
1157
1462
|
const sortNodes = (a, b) => nodeSorter(a, b, { flowType });
|
|
1158
|
-
const
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
const
|
|
1463
|
+
const nonSsoNodes = withoutSingleSignOnNodes(flow.ui.nodes).sort(sortNodes);
|
|
1464
|
+
const hasSso = flow.ui.nodes.filter(isNodeVisible).some(
|
|
1465
|
+
(node) => node.group === UiNodeGroupEnum.Oidc || node.group === UiNodeGroupEnum.Saml
|
|
1466
|
+
);
|
|
1467
|
+
const showSsoDivider = hasSso && nonSsoNodes.some(isNodeVisible);
|
|
1468
|
+
return /* @__PURE__ */ jsxs(OryCard, { children: [
|
|
1469
|
+
/* @__PURE__ */ jsx(OryCardHeader, {}),
|
|
1470
|
+
/* @__PURE__ */ jsxs(OryCardContent, { children: [
|
|
1471
|
+
/* @__PURE__ */ jsx(OryCardValidationMessages, {}),
|
|
1472
|
+
/* @__PURE__ */ jsx(OryFormSocialButtonsForm, {}),
|
|
1473
|
+
/* @__PURE__ */ jsx(
|
|
1474
|
+
OryForm,
|
|
1475
|
+
{
|
|
1476
|
+
"data-testid": `ory/form/methods/local`,
|
|
1477
|
+
onAfterSubmit: handleAfterFormSubmit(dispatchFormState),
|
|
1478
|
+
children: /* @__PURE__ */ jsxs(Form.Group, { children: [
|
|
1479
|
+
showSsoDivider && /* @__PURE__ */ jsx(Card.Divider, {}),
|
|
1480
|
+
nonSsoNodes.map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k))
|
|
1481
|
+
] })
|
|
1482
|
+
}
|
|
1483
|
+
)
|
|
1484
|
+
] }),
|
|
1485
|
+
/* @__PURE__ */ jsx(OryCardFooter, {})
|
|
1486
|
+
] });
|
|
1487
|
+
}
|
|
1488
|
+
function AuthMethodList({
|
|
1489
|
+
options,
|
|
1490
|
+
setSelectedGroup
|
|
1491
|
+
}) {
|
|
1492
|
+
const { Card } = useComponents();
|
|
1493
|
+
const { setValue, getValues } = useFormContext();
|
|
1494
|
+
if (Object.entries(options).length === 0) {
|
|
1495
|
+
return null;
|
|
1496
|
+
}
|
|
1497
|
+
const handleClick = (group, options2) => {
|
|
1498
|
+
var _a, _b, _c, _d;
|
|
1499
|
+
if (isGroupImmediateSubmit(group)) {
|
|
1500
|
+
if (group === "code" && !getValues("identifier") && ((_b = (_a = options2 == null ? void 0 : options2.title) == null ? void 0 : _a.values) == null ? void 0 : _b.address)) {
|
|
1501
|
+
setValue("identifier", (_d = (_c = options2 == null ? void 0 : options2.title) == null ? void 0 : _c.values) == null ? void 0 : _d.address);
|
|
1502
|
+
}
|
|
1503
|
+
setValue("method", group);
|
|
1504
|
+
} else {
|
|
1505
|
+
setSelectedGroup(group);
|
|
1506
|
+
}
|
|
1507
|
+
};
|
|
1508
|
+
return /* @__PURE__ */ jsx(Card.AuthMethodListContainer, { children: Object.entries(options).map(([group, options2]) => /* @__PURE__ */ jsx(
|
|
1509
|
+
Card.AuthMethodListItem,
|
|
1510
|
+
{
|
|
1511
|
+
group,
|
|
1512
|
+
title: options2.title,
|
|
1513
|
+
onClick: () => handleClick(group, options2)
|
|
1514
|
+
},
|
|
1515
|
+
group
|
|
1516
|
+
)) });
|
|
1517
|
+
}
|
|
1518
|
+
function toAuthMethodPickerOptions(visibleGroups) {
|
|
1519
|
+
return Object.fromEntries(
|
|
1163
1520
|
Object.values(UiNodeGroupEnum).filter((group) => {
|
|
1164
|
-
var
|
|
1165
|
-
return (
|
|
1521
|
+
var _a;
|
|
1522
|
+
return (_a = visibleGroups[group]) == null ? void 0 : _a.length;
|
|
1166
1523
|
}).filter(
|
|
1167
1524
|
(group) => ![
|
|
1168
1525
|
UiNodeGroupEnum.Oidc,
|
|
@@ -1174,16 +1531,18 @@ function OryTwoStepCard() {
|
|
|
1174
1531
|
].includes(group)
|
|
1175
1532
|
).map((g) => [g, {}])
|
|
1176
1533
|
);
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
);
|
|
1534
|
+
}
|
|
1535
|
+
function OryTwoStepCardStateSelectMethod() {
|
|
1536
|
+
var _a, _b, _c, _d;
|
|
1537
|
+
const { Form, Card, Message } = useComponents();
|
|
1538
|
+
const { flow, flowType, dispatchFormState } = useOryFlow();
|
|
1539
|
+
const { ui } = flow;
|
|
1540
|
+
const intl = useIntl();
|
|
1541
|
+
const nodeSorter = useNodeSorter();
|
|
1542
|
+
const sortNodes = (a, b) => nodeSorter(a, b, { flowType });
|
|
1543
|
+
const visibleGroups = useNodeGroupsWithVisibleNodes(ui.nodes);
|
|
1544
|
+
const authMethodBlocks = toAuthMethodPickerOptions(visibleGroups);
|
|
1545
|
+
const authMethodAdditionalNodes = useFunctionalNodes(ui.nodes);
|
|
1187
1546
|
if (UiNodeGroupEnum.Code in authMethodBlocks) {
|
|
1188
1547
|
let identifier = (_b = (_a = findNode(ui.nodes, {
|
|
1189
1548
|
group: "identifier_first",
|
|
@@ -1204,99 +1563,58 @@ function OryTwoStepCard() {
|
|
|
1204
1563
|
};
|
|
1205
1564
|
}
|
|
1206
1565
|
}
|
|
1207
|
-
const
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
}
|
|
1213
|
-
|
|
1214
|
-
dispatchFormState({
|
|
1215
|
-
type: "action_select_method",
|
|
1216
|
-
method
|
|
1217
|
-
});
|
|
1218
|
-
}
|
|
1566
|
+
const noMethods = {
|
|
1567
|
+
id: 5000002,
|
|
1568
|
+
text: intl.formatMessage({
|
|
1569
|
+
id: `identities.messages.5000002`,
|
|
1570
|
+
defaultMessage: "No authentication methods are available for this request. Please contact the site or app owner."
|
|
1571
|
+
}),
|
|
1572
|
+
type: "error"
|
|
1219
1573
|
};
|
|
1220
|
-
const hasSso = ui.nodes.some(
|
|
1221
|
-
(node) => node.group === UiNodeGroupEnum.Oidc || node.group === UiNodeGroupEnum.Saml
|
|
1222
|
-
);
|
|
1223
|
-
const showSso = !(formState.current === "method_active" && !(formState.method === UiNodeGroupEnum.Oidc || formState.method === UiNodeGroupEnum.Saml));
|
|
1224
|
-
const showSsoDivider = hasSso && nonSsoNodes.filter((n) => {
|
|
1225
|
-
if (isUiNodeInputAttributes(n.attributes)) {
|
|
1226
|
-
return n.attributes.type !== UiNodeInputAttributesTypeEnum.Hidden;
|
|
1227
|
-
} else if (isUiNodeScriptAttributes(n.attributes)) {
|
|
1228
|
-
return false;
|
|
1229
|
-
}
|
|
1230
|
-
return true;
|
|
1231
|
-
}).length > 0;
|
|
1232
1574
|
return /* @__PURE__ */ jsxs(OryCard, { children: [
|
|
1233
1575
|
/* @__PURE__ */ jsx(OryCardHeader, {}),
|
|
1234
1576
|
/* @__PURE__ */ jsxs(OryCardContent, { children: [
|
|
1235
1577
|
/* @__PURE__ */ jsx(OryCardValidationMessages, {}),
|
|
1236
|
-
|
|
1237
|
-
/* @__PURE__ */
|
|
1578
|
+
/* @__PURE__ */ jsx(OryFormSocialButtonsForm, {}),
|
|
1579
|
+
Object.entries(authMethodBlocks).length > 0 ? /* @__PURE__ */ jsx(
|
|
1238
1580
|
OryForm,
|
|
1239
1581
|
{
|
|
1240
1582
|
"data-testid": `ory/form/methods/local`,
|
|
1241
|
-
onAfterSubmit: handleAfterFormSubmit,
|
|
1242
|
-
children: [
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
})
|
|
1257
|
-
}
|
|
1258
|
-
),
|
|
1259
|
-
authMethodAdditionalNodes.sort(sortNodes).map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k))
|
|
1260
|
-
] }),
|
|
1261
|
-
formState.current === "method_active" && finalNodes.length > 0 && /* @__PURE__ */ jsxs(Form.Group, { children: [
|
|
1262
|
-
ui.nodes.filter(
|
|
1263
|
-
(n) => isUiNodeScriptAttributes(n.attributes) || n.group === UiNodeGroupEnum.Captcha || n.group === UiNodeGroupEnum.Default || n.group === UiNodeGroupEnum.Profile
|
|
1264
|
-
).map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k)),
|
|
1265
|
-
finalNodes.sort(sortNodes).map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k))
|
|
1266
|
-
] }),
|
|
1267
|
-
/* @__PURE__ */ jsx(OryCardFooter, {})
|
|
1268
|
-
]
|
|
1583
|
+
onAfterSubmit: handleAfterFormSubmit(dispatchFormState),
|
|
1584
|
+
children: /* @__PURE__ */ jsxs(Form.Group, { children: [
|
|
1585
|
+
/* @__PURE__ */ jsx(Card.Divider, {}),
|
|
1586
|
+
/* @__PURE__ */ jsx(
|
|
1587
|
+
AuthMethodList,
|
|
1588
|
+
{
|
|
1589
|
+
options: authMethodBlocks,
|
|
1590
|
+
setSelectedGroup: (group) => dispatchFormState({
|
|
1591
|
+
type: "action_select_method",
|
|
1592
|
+
method: group
|
|
1593
|
+
})
|
|
1594
|
+
}
|
|
1595
|
+
),
|
|
1596
|
+
authMethodAdditionalNodes.sort(sortNodes).map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k))
|
|
1597
|
+
] })
|
|
1269
1598
|
}
|
|
1270
|
-
)
|
|
1271
|
-
] })
|
|
1599
|
+
) : !hasSingleSignOnNodes(ui.nodes) && /* @__PURE__ */ jsx("div", { "data-testid": `ory/form/methods/local`, children: /* @__PURE__ */ jsx(Message.Root, { children: /* @__PURE__ */ jsx(Message.Content, { message: noMethods }, noMethods.id) }) })
|
|
1600
|
+
] }),
|
|
1601
|
+
/* @__PURE__ */ jsx(OryCardFooter, {})
|
|
1272
1602
|
] });
|
|
1273
1603
|
}
|
|
1274
|
-
function
|
|
1275
|
-
const {
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1604
|
+
function OryTwoStepCard() {
|
|
1605
|
+
const { formState } = useOryFlow();
|
|
1606
|
+
switch (formState.current) {
|
|
1607
|
+
case "provide_identifier":
|
|
1608
|
+
return /* @__PURE__ */ jsx(OryTwoStepCardStateProvideIdentifier, {});
|
|
1609
|
+
case "select_method":
|
|
1610
|
+
return /* @__PURE__ */ jsx(OryTwoStepCardStateSelectMethod, {});
|
|
1611
|
+
case "method_active":
|
|
1612
|
+
return /* @__PURE__ */ jsx(OryTwoStepCardStateMethodActive, { formState });
|
|
1279
1613
|
}
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
setValue("identifier", (_d = (_c = options2 == null ? void 0 : options2.title) == null ? void 0 : _c.values) == null ? void 0 : _d.address);
|
|
1285
|
-
}
|
|
1286
|
-
setValue("method", group);
|
|
1287
|
-
} else {
|
|
1288
|
-
setSelectedGroup(group);
|
|
1289
|
-
}
|
|
1290
|
-
};
|
|
1291
|
-
return /* @__PURE__ */ jsx(Card.AuthMethodListContainer, { children: Object.entries(options).map(([group, options2]) => /* @__PURE__ */ jsx(
|
|
1292
|
-
Card.AuthMethodListItem,
|
|
1293
|
-
{
|
|
1294
|
-
group,
|
|
1295
|
-
title: options2.title,
|
|
1296
|
-
onClick: () => handleClick(group, options2)
|
|
1297
|
-
},
|
|
1298
|
-
group
|
|
1299
|
-
)) });
|
|
1614
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1615
|
+
"unknown form state: ",
|
|
1616
|
+
formState.current
|
|
1617
|
+
] });
|
|
1300
1618
|
}
|
|
1301
1619
|
function OryFormGroups({ groups }) {
|
|
1302
1620
|
const {
|
|
@@ -1306,8 +1624,8 @@ function OryFormGroups({ groups }) {
|
|
|
1306
1624
|
const { flowType } = useOryFlow();
|
|
1307
1625
|
const { Form } = useComponents();
|
|
1308
1626
|
const nodes = ui.nodes.filter((node) => groups.indexOf(node.group) > -1).sort((a, b) => nodeSorter(a, b, { flowType }));
|
|
1309
|
-
return /* @__PURE__ */ jsx(Form.Group, { children: nodes.map((node
|
|
1310
|
-
return /* @__PURE__ */ jsx(Node, { node },
|
|
1627
|
+
return /* @__PURE__ */ jsx(Form.Group, { children: nodes.map((node) => {
|
|
1628
|
+
return /* @__PURE__ */ jsx(Node, { node }, getNodeId(node));
|
|
1311
1629
|
}) });
|
|
1312
1630
|
}
|
|
1313
1631
|
function OryFormSection({
|
|
@@ -1343,7 +1661,7 @@ function OryConsentCard() {
|
|
|
1343
1661
|
/* @__PURE__ */ jsx(OryCardHeader, {}),
|
|
1344
1662
|
/* @__PURE__ */ jsx(OryCardContent, { children: /* @__PURE__ */ jsxs(OryForm, { children: [
|
|
1345
1663
|
/* @__PURE__ */ jsx(Card.Divider, {}),
|
|
1346
|
-
/* @__PURE__ */ jsx(Form.Group, { children: flow.flow.ui.nodes.map((node
|
|
1664
|
+
/* @__PURE__ */ jsx(Form.Group, { children: flow.flow.ui.nodes.map((node) => /* @__PURE__ */ jsx(Node, { node }, getNodeId(node))) }),
|
|
1347
1665
|
/* @__PURE__ */ jsx(Card.Divider, {}),
|
|
1348
1666
|
/* @__PURE__ */ jsx(OryCardFooter, {})
|
|
1349
1667
|
] }) })
|
|
@@ -1714,7 +2032,7 @@ function SettingsSectionContent({ group, nodes }) {
|
|
|
1714
2032
|
"data-testid": "ory/screen/settings/group/totp",
|
|
1715
2033
|
children: [
|
|
1716
2034
|
/* @__PURE__ */ jsx(OrySettingsTotp, { nodes: (_a = groupedNodes.groups.totp) != null ? _a : [] }),
|
|
1717
|
-
(_b = groupedNodes.groups.default) == null ? void 0 : _b.map((node
|
|
2035
|
+
(_b = groupedNodes.groups.default) == null ? void 0 : _b.map((node) => /* @__PURE__ */ jsx(Node, { node }, getNodeId(node)))
|
|
1718
2036
|
]
|
|
1719
2037
|
}
|
|
1720
2038
|
);
|
|
@@ -1732,7 +2050,7 @@ function SettingsSectionContent({ group, nodes }) {
|
|
|
1732
2050
|
nodes: (_c = groupedNodes.groups.lookup_secret) != null ? _c : []
|
|
1733
2051
|
}
|
|
1734
2052
|
),
|
|
1735
|
-
(_d = groupedNodes.groups.default) == null ? void 0 : _d.map((node
|
|
2053
|
+
(_d = groupedNodes.groups.default) == null ? void 0 : _d.map((node) => /* @__PURE__ */ jsx(Node, { node }, getNodeId(node)))
|
|
1736
2054
|
]
|
|
1737
2055
|
}
|
|
1738
2056
|
);
|
|
@@ -1745,7 +2063,7 @@ function SettingsSectionContent({ group, nodes }) {
|
|
|
1745
2063
|
"data-testid": "ory/screen/settings/group/oidc",
|
|
1746
2064
|
children: [
|
|
1747
2065
|
/* @__PURE__ */ jsx(OrySettingsOidc, { nodes: (_e = groupedNodes.groups.oidc) != null ? _e : [] }),
|
|
1748
|
-
(_f = groupedNodes.groups.default) == null ? void 0 : _f.map((node
|
|
2066
|
+
(_f = groupedNodes.groups.default) == null ? void 0 : _f.map((node) => /* @__PURE__ */ jsx(Node, { node }, getNodeId(node)))
|
|
1749
2067
|
]
|
|
1750
2068
|
}
|
|
1751
2069
|
);
|
|
@@ -1758,7 +2076,7 @@ function SettingsSectionContent({ group, nodes }) {
|
|
|
1758
2076
|
"data-testid": "ory/screen/settings/group/webauthn",
|
|
1759
2077
|
children: [
|
|
1760
2078
|
/* @__PURE__ */ jsx(OrySettingsWebauthn, { nodes: (_g = groupedNodes.groups.webauthn) != null ? _g : [] }),
|
|
1761
|
-
(_h = groupedNodes.groups.default) == null ? void 0 : _h.map((node
|
|
2079
|
+
(_h = groupedNodes.groups.default) == null ? void 0 : _h.map((node) => /* @__PURE__ */ jsx(Node, { node }, getNodeId(node)))
|
|
1762
2080
|
]
|
|
1763
2081
|
}
|
|
1764
2082
|
);
|
|
@@ -1771,7 +2089,7 @@ function SettingsSectionContent({ group, nodes }) {
|
|
|
1771
2089
|
"data-testid": "ory/screen/settings/group/passkey",
|
|
1772
2090
|
children: [
|
|
1773
2091
|
/* @__PURE__ */ jsx(OrySettingsPasskey, { nodes: (_i = groupedNodes.groups.passkey) != null ? _i : [] }),
|
|
1774
|
-
(_j = groupedNodes.groups.default) == null ? void 0 : _j.map((node
|
|
2092
|
+
(_j = groupedNodes.groups.default) == null ? void 0 : _j.map((node) => /* @__PURE__ */ jsx(Node, { node }, getNodeId(node)))
|
|
1775
2093
|
]
|
|
1776
2094
|
}
|
|
1777
2095
|
);
|
|
@@ -1792,16 +2110,16 @@ function SettingsSectionContent({ group, nodes }) {
|
|
|
1792
2110
|
id: `settings.${group}.description`
|
|
1793
2111
|
}),
|
|
1794
2112
|
children: [
|
|
1795
|
-
(_k = groupedNodes.groups.default) == null ? void 0 : _k.map((node
|
|
2113
|
+
(_k = groupedNodes.groups.default) == null ? void 0 : _k.map((node) => /* @__PURE__ */ jsx(Node, { node }, getNodeId(node))),
|
|
1796
2114
|
nodes.filter(
|
|
1797
2115
|
(node) => "type" in node.attributes && node.attributes.type !== "submit"
|
|
1798
|
-
).map((node
|
|
2116
|
+
).map((node) => /* @__PURE__ */ jsx(Node, { node }, getNodeId(node)))
|
|
1799
2117
|
]
|
|
1800
2118
|
}
|
|
1801
2119
|
),
|
|
1802
2120
|
/* @__PURE__ */ jsx(Card.SettingsSectionFooter, { children: nodes.filter(
|
|
1803
2121
|
(node) => "type" in node.attributes && node.attributes.type === "submit"
|
|
1804
|
-
).map((node
|
|
2122
|
+
).map((node) => /* @__PURE__ */ jsx(Node, { node }, getNodeId(node))) })
|
|
1805
2123
|
]
|
|
1806
2124
|
}
|
|
1807
2125
|
);
|
|
@@ -1815,7 +2133,7 @@ function OrySettingsCard() {
|
|
|
1815
2133
|
const scriptNodes = onlyScriptNodes(flow.ui.nodes);
|
|
1816
2134
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1817
2135
|
/* @__PURE__ */ jsx(OryCardValidationMessages, {}),
|
|
1818
|
-
scriptNodes.map((n) => /* @__PURE__ */ jsx(Node, { node: n })),
|
|
2136
|
+
scriptNodes.map((n) => /* @__PURE__ */ jsx(Node, { node: n }, getNodeId(n))),
|
|
1819
2137
|
uniqueGroups.entries.map(([group, nodes]) => {
|
|
1820
2138
|
if (group === UiNodeGroupEnum.Default) {
|
|
1821
2139
|
return null;
|
|
@@ -2122,9 +2440,11 @@ var en_default = {
|
|
|
2122
2440
|
"card.header.parts.oidc": "a social provider",
|
|
2123
2441
|
"card.header.parts.password.registration": "your {identifierLabel} and a password",
|
|
2124
2442
|
"card.header.parts.password.login": "your {identifierLabel} and password",
|
|
2125
|
-
"card.header.parts.code": "a code sent to
|
|
2443
|
+
"card.header.parts.code": "a code sent to you",
|
|
2126
2444
|
"card.header.parts.passkey": "a Passkey",
|
|
2127
2445
|
"card.header.parts.webauthn": "a security key",
|
|
2446
|
+
"card.header.parts.totp": "your authenticator app",
|
|
2447
|
+
"card.header.parts.lookup_secret": "a backup recovery code",
|
|
2128
2448
|
"card.header.parts.identifier-first": "your {identifierLabel}",
|
|
2129
2449
|
"card.header.description.login": "Sign in with {identifierLabel}",
|
|
2130
2450
|
"card.header.description.registration": "Sign up with {identifierLabel}",
|
|
@@ -2357,28 +2677,30 @@ var de_default = {
|
|
|
2357
2677
|
"login.cancel-label": "Nicht das richtige Konto?",
|
|
2358
2678
|
"identities.messages.1010023": "Code an {address} senden",
|
|
2359
2679
|
"identities.messages.1010016": "Sie haben versucht, sich mit \u201E{duplicateIdentifier}\u201C anzumelden, aber diese E-Mail-Adresse wird bereits von einem anderen Konto verwendet. \nMelden Sie sich mit einer der folgenden Optionen bei Ihrem Konto an, um Ihr Konto \u201E{duplicateIdentifier}\u201C bei \u201E{provider}\u201C als weitere Anmeldem\xF6glichkeit hinzuzuf\xFCgen.",
|
|
2360
|
-
"identities.messages.1010017": "",
|
|
2361
|
-
"identities.messages.1010018": "",
|
|
2362
|
-
"identities.messages.1010019": "",
|
|
2680
|
+
"identities.messages.1010017": "Anmelden und verbinden",
|
|
2681
|
+
"identities.messages.1010018": "Mit {provider} best\xE4tigen",
|
|
2682
|
+
"identities.messages.1010019": "Code senden um fortzufahren",
|
|
2363
2683
|
"identities.messages.1010020": "",
|
|
2364
|
-
"identities.messages.1010021": "",
|
|
2365
|
-
"identities.messages.1010022": "",
|
|
2366
|
-
"identities.messages.1040007": "",
|
|
2367
|
-
"identities.messages.1040008": "",
|
|
2368
|
-
"identities.messages.1040009": "",
|
|
2684
|
+
"identities.messages.1010021": "Mit Paskey anmelden",
|
|
2685
|
+
"identities.messages.1010022": "Mit Passwort anmelden",
|
|
2686
|
+
"identities.messages.1040007": "Mit Passkey registrieren",
|
|
2687
|
+
"identities.messages.1040008": "Zur\xFCck",
|
|
2688
|
+
"identities.messages.1040009": "Bitte w\xE4hlen Sie eine Authentifizierungsmethode, um fortzufahren.",
|
|
2369
2689
|
"identities.messages.1050019": "Passkey hinzuf\xFCgen",
|
|
2370
|
-
"identities.messages.1050020": "",
|
|
2371
|
-
"identities.messages.4000037": "",
|
|
2372
|
-
"identities.messages.4010009": "",
|
|
2373
|
-
"identities.messages.4010010": "",
|
|
2690
|
+
"identities.messages.1050020": 'Passkey "{display_name}" entfernen',
|
|
2691
|
+
"identities.messages.4000037": "F\xFCr die eingegebenen Daten existiert kein Account",
|
|
2692
|
+
"identities.messages.4010009": "Die Authentifizierungsmethode stimmt nicht mit der vorherigen Authentifizierungsmethode \xFCberein. Bitte versuchen Sie es erneut.",
|
|
2693
|
+
"identities.messages.4010010": "Die eingegebene Adresse stimmt nicht mit der Adresse \xFCberein, die Sie bei der Registrierung angegeben haben. Bitte versuchen Sie es erneut.",
|
|
2374
2694
|
"input.placeholder": "{placeholder} eingeben",
|
|
2375
|
-
"card.header.parts.code": "
|
|
2695
|
+
"card.header.parts.code": "ein an Sie gesendeter Code",
|
|
2376
2696
|
"card.header.parts.identifier-first": "Ihr {identifierLabel}",
|
|
2377
2697
|
"card.header.parts.oidc": "ein sozialer Anbieter",
|
|
2378
2698
|
"card.header.parts.passkey": "ein Passkey",
|
|
2379
2699
|
"card.header.parts.password.login": "Ihrer {identifierLabel} und Ihrem Passwort",
|
|
2380
2700
|
"card.header.parts.password.registration": "Ihrer {identifierLabel} und einem Passwort",
|
|
2381
2701
|
"card.header.parts.webauthn": "ein Sicherheitsschl\xFCssel",
|
|
2702
|
+
"card.header.parts.totp": "deine Authentifikator-App",
|
|
2703
|
+
"card.header.parts.lookup_secret": "ein Backup-Wiederherstellungscode",
|
|
2382
2704
|
"recovery.subtitle": "Geben Sie die mit Ihrem Konto verkn\xFCpfte E-Mail-Adresse ein, um einen einmaligen Zugangscode zu erhalten",
|
|
2383
2705
|
"verification.subtitle": "Geben Sie die mit Ihrem Konto verkn\xFCpfte E-Mail-Adresse ein, um es zu best\xE4tigen",
|
|
2384
2706
|
"card.header.description.login": "Melden Sie sich mit {identifierLabel} an",
|
|
@@ -2471,7 +2793,6 @@ var es_default = {
|
|
|
2471
2793
|
"error.back-button": "Regresar",
|
|
2472
2794
|
"error.description": "Ocurri\xF3 un error con el siguiente mensaje:",
|
|
2473
2795
|
"error.support-email-link": "Si el problema persiste, por favor contacte a <a>{contactSupportEmail}</a>",
|
|
2474
|
-
"error.title": "",
|
|
2475
2796
|
"error.title-internal-server-error": "Error Interno del Servidor",
|
|
2476
2797
|
"error.title-not-found": "404 - P\xE1gina no encontrada",
|
|
2477
2798
|
"identities.messages.1010001": "Iniciar sesi\xF3n",
|
|
@@ -2646,45 +2967,6 @@ var es_default = {
|
|
|
2646
2967
|
"two-step.totp.description": "Utilice un c\xF3digo de un solo uso de 6 d\xEDgitos de su aplicaci\xF3n de autenticaci\xF3n",
|
|
2647
2968
|
"two-step.lookup_secret.title": "C\xF3digo de recuperaci\xF3n de respaldo",
|
|
2648
2969
|
"two-step.lookup_secret.description": "Utilice uno de sus c\xF3digos de respaldo de 8 d\xEDgitos para autenticarse",
|
|
2649
|
-
"identities.messages.1010016": "",
|
|
2650
|
-
"identities.messages.1010017": "",
|
|
2651
|
-
"identities.messages.1010018": "",
|
|
2652
|
-
"identities.messages.1010019": "",
|
|
2653
|
-
"identities.messages.1010020": "",
|
|
2654
|
-
"identities.messages.1010021": "",
|
|
2655
|
-
"identities.messages.1010022": "",
|
|
2656
|
-
"identities.messages.1010023": "",
|
|
2657
|
-
"identities.messages.1040007": "",
|
|
2658
|
-
"identities.messages.1040008": "",
|
|
2659
|
-
"identities.messages.1040009": "",
|
|
2660
|
-
"identities.messages.1050019": "",
|
|
2661
|
-
"identities.messages.1050020": "",
|
|
2662
|
-
"identities.messages.1070014": "",
|
|
2663
|
-
"identities.messages.1070015": "",
|
|
2664
|
-
"identities.messages.4000037": "",
|
|
2665
|
-
"identities.messages.4000038": "",
|
|
2666
|
-
"identities.messages.4010009": "",
|
|
2667
|
-
"identities.messages.4010010": "",
|
|
2668
|
-
"login.cancel-button": "",
|
|
2669
|
-
"login.cancel-label": "",
|
|
2670
|
-
"input.placeholder": "",
|
|
2671
|
-
"card.header.description.login": "",
|
|
2672
|
-
"card.header.description.registration": "",
|
|
2673
|
-
"card.header.parts.code": "",
|
|
2674
|
-
"card.header.parts.identifier-first": "",
|
|
2675
|
-
"card.header.parts.oidc": "",
|
|
2676
|
-
"card.header.parts.passkey": "",
|
|
2677
|
-
"card.header.parts.password.login": "",
|
|
2678
|
-
"card.header.parts.password.registration": "",
|
|
2679
|
-
"card.header.parts.webauthn": "",
|
|
2680
|
-
"forms.label.forgot-password": "",
|
|
2681
|
-
"login.subtitle": "",
|
|
2682
|
-
"login.subtitle-refresh": "",
|
|
2683
|
-
"misc.or": "",
|
|
2684
|
-
"recovery.subtitle": "",
|
|
2685
|
-
"registration.subtitle": "",
|
|
2686
|
-
"settings.subtitle": "",
|
|
2687
|
-
"verification.subtitle": "",
|
|
2688
2970
|
"settings.totp.info.linked": "Actualmente tienes una aplicaci\xF3n de autenticaci\xF3n conectada.",
|
|
2689
2971
|
"settings.totp.info.not-linked": "Para habilitar, escanea el c\xF3digo QR con tu autenticador e ingresa el c\xF3digo.",
|
|
2690
2972
|
"settings.totp.title": "Aplicaci\xF3n Autenticadora",
|
|
@@ -2702,25 +2984,6 @@ var es_default = {
|
|
|
2702
2984
|
"settings.profile.title": "Configuraci\xF3n de Perfil",
|
|
2703
2985
|
"settings.webauthn.description": "Administra la configuraci\xF3n de tu token de hardware",
|
|
2704
2986
|
"settings.webauthn.title": "Gestionar Tokens de Hardware",
|
|
2705
|
-
"settings.oidc.info": "",
|
|
2706
|
-
"settings.passkey.info": "",
|
|
2707
|
-
"settings.title-lookup-secret": "",
|
|
2708
|
-
"settings.title-navigation": "",
|
|
2709
|
-
"settings.title-oidc": "",
|
|
2710
|
-
"settings.title-passkey": "",
|
|
2711
|
-
"settings.title-password": "",
|
|
2712
|
-
"settings.title-profile": "",
|
|
2713
|
-
"settings.title-totp": "",
|
|
2714
|
-
"settings.title-webauthn": "",
|
|
2715
|
-
"settings.webauthn.info": "",
|
|
2716
|
-
"card.footer.select-another-method": "",
|
|
2717
|
-
"account-linking.title": "",
|
|
2718
|
-
"property.code": "",
|
|
2719
|
-
"property.email": "",
|
|
2720
|
-
"property.identifier": "",
|
|
2721
|
-
"property.password": "",
|
|
2722
|
-
"property.phone": "",
|
|
2723
|
-
"property.username": "",
|
|
2724
2987
|
"consent.title": "Autorizar {party}",
|
|
2725
2988
|
"consent.subtitle": "Una aplicaci\xF3n de terceros quiere acceder a la informaci\xF3n asociada a su cuenta {identifier}.",
|
|
2726
2989
|
"consent.scope.openid.title": "Identidad",
|
|
@@ -2735,12 +2998,73 @@ var es_default = {
|
|
|
2735
2998
|
"consent.scope.address.description": "Acceda a su direcci\xF3n postal.",
|
|
2736
2999
|
"consent.scope.phone.title": "N\xFAmero de tel\xE9fono",
|
|
2737
3000
|
"consent.scope.phone.description": "Recupere su n\xFAmero de tel\xE9fono y su estado de verificaci\xF3n.",
|
|
2738
|
-
"error.
|
|
2739
|
-
"
|
|
2740
|
-
"
|
|
2741
|
-
"
|
|
2742
|
-
"
|
|
2743
|
-
"
|
|
3001
|
+
"error.title": "Ocurri\xF3 un error",
|
|
3002
|
+
"identities.messages.1010016": 'Intentaste iniciar sesi\xF3n con "{duplicateIdentifier}", pero ese correo electr\xF3nico ya est\xE1 en uso por otra cuenta. Inicia sesi\xF3n en tu cuenta con una de las opciones a continuaci\xF3n para agregar tu cuenta "{duplicateIdentifier}" en "{provider}" como otra forma de iniciar sesi\xF3n.',
|
|
3003
|
+
"identities.messages.1010017": "Iniciar sesi\xF3n y vincular",
|
|
3004
|
+
"identities.messages.1010018": "Confirmar con {provider}",
|
|
3005
|
+
"identities.messages.1010019": "Solicitar c\xF3digo para continuar",
|
|
3006
|
+
"identities.messages.1010021": "Iniciar sesi\xF3n con clave de acceso",
|
|
3007
|
+
"identities.messages.1010022": "Iniciar sesi\xF3n con contrase\xF1a",
|
|
3008
|
+
"identities.messages.1010023": "Enviar c\xF3digo a {address}",
|
|
3009
|
+
"identities.messages.1040007": "Registrarse con clave de acceso",
|
|
3010
|
+
"identities.messages.1040008": "Atr\xE1s",
|
|
3011
|
+
"identities.messages.1040009": "Por favor, elige una credencial para autenticarte.",
|
|
3012
|
+
"identities.messages.1050019": "Agregar clave de acceso",
|
|
3013
|
+
"identities.messages.1070014": "Iniciar sesi\xF3n y vincular credencial",
|
|
3014
|
+
"identities.messages.1070015": "Por favor, completa el desaf\xEDo captcha para continuar.",
|
|
3015
|
+
"identities.messages.4000037": "Esta cuenta no existe o no tiene ning\xFAn m\xE9todo de inicio de sesi\xF3n configurado.",
|
|
3016
|
+
"identities.messages.4000038": "Fall\xF3 la verificaci\xF3n de Captcha, por favor intenta de nuevo.",
|
|
3017
|
+
"identities.messages.4010009": "Las credenciales vinculadas no coinciden.",
|
|
3018
|
+
"identities.messages.4010010": "La direcci\xF3n que ingresaste no coincide con ninguna direcci\xF3n conocida en la cuenta actual.",
|
|
3019
|
+
"login.cancel-button": "Cancelar",
|
|
3020
|
+
"login.cancel-label": "\xBFNo es la cuenta correcta?",
|
|
3021
|
+
"login.subtitle": "Iniciar sesi\xF3n con {parts}",
|
|
3022
|
+
"login.subtitle-refresh": "Confirma tu identidad con {parts}",
|
|
3023
|
+
"recovery.subtitle": "Ingresa la direcci\xF3n de correo electr\xF3nico asociada con tu cuenta para recibir un c\xF3digo de acceso \xFAnico",
|
|
3024
|
+
"registration.subtitle": "Registrarse con {parts}",
|
|
3025
|
+
"settings.subtitle": "Actualiza la configuraci\xF3n de tu cuenta",
|
|
3026
|
+
"settings.title-lookup-secret": "Administrar c\xF3digos de recuperaci\xF3n de respaldo 2FA",
|
|
3027
|
+
"settings.title-navigation": "Configuraci\xF3n de la cuenta",
|
|
3028
|
+
"settings.title-oidc": "Inicio de sesi\xF3n social",
|
|
3029
|
+
"settings.title-password": "Cambiar contrase\xF1a",
|
|
3030
|
+
"settings.title-profile": "Configuraci\xF3n del perfil",
|
|
3031
|
+
"settings.title-totp": "Administrar la aplicaci\xF3n de autenticaci\xF3n 2FA TOTP",
|
|
3032
|
+
"settings.title-webauthn": "Administrar tokens de hardware",
|
|
3033
|
+
"settings.title-passkey": "Administrar claves de acceso",
|
|
3034
|
+
"verification.subtitle": "Ingresa la direcci\xF3n de correo electr\xF3nico asociada con tu cuenta para verificarla",
|
|
3035
|
+
"input.placeholder": "Ingresa tu {placeholder}",
|
|
3036
|
+
"card.header.parts.oidc": "un proveedor social",
|
|
3037
|
+
"card.header.parts.password.registration": "tu {identifierLabel} y una contrase\xF1a",
|
|
3038
|
+
"card.header.parts.password.login": "tu {identifierLabel} y contrase\xF1a",
|
|
3039
|
+
"card.header.parts.code": "un c\xF3digo enviado a tu correo electr\xF3nico",
|
|
3040
|
+
"card.header.parts.passkey": "una clave de acceso",
|
|
3041
|
+
"card.header.parts.webauthn": "una clave de seguridad",
|
|
3042
|
+
"card.header.parts.totp": "su aplicaci\xF3n de autenticaci\xF3n",
|
|
3043
|
+
"card.header.parts.lookup_secret": "un c\xF3digo de recuperaci\xF3n de copia de seguridad",
|
|
3044
|
+
"card.header.parts.identifier-first": "tu {identifierLabel}",
|
|
3045
|
+
"card.header.description.login": "Iniciar sesi\xF3n con {identifierLabel}",
|
|
3046
|
+
"card.header.description.registration": "Registrarse con {identifierLabel}",
|
|
3047
|
+
"misc.or": "o",
|
|
3048
|
+
"forms.label.forgot-password": "\xBFOlvidaste tu contrase\xF1a?",
|
|
3049
|
+
"settings.oidc.info": "Las cuentas conectadas de estos proveedores se pueden utilizar para iniciar sesi\xF3n en tu cuenta",
|
|
3050
|
+
"settings.webauthn.info": "Los tokens de hardware se utilizan para la autenticaci\xF3n de segundo factor o como primer factor con las claves de acceso",
|
|
3051
|
+
"settings.passkey.info": "Administra la configuraci\xF3n de tus claves de acceso",
|
|
3052
|
+
"card.footer.select-another-method": "Seleccionar otro m\xE9todo",
|
|
3053
|
+
"account-linking.title": "Vincular cuenta",
|
|
3054
|
+
"property.password": "contrase\xF1a",
|
|
3055
|
+
"property.email": "correo electr\xF3nico",
|
|
3056
|
+
"property.phone": "tel\xE9fono",
|
|
3057
|
+
"property.username": "nombre de usuario",
|
|
3058
|
+
"property.identifier": "identificador",
|
|
3059
|
+
"property.code": "c\xF3digo",
|
|
3060
|
+
"error.title.what-happened": "\xBFQu\xE9 pas\xF3?",
|
|
3061
|
+
"error.title.what-can-i-do": "\xBFQu\xE9 puedo hacer?",
|
|
3062
|
+
"error.instructions": "Por favor, int\xE9ntalo de nuevo en unos minutos o contacta al operador del sitio web.",
|
|
3063
|
+
"error.footer.text": "Al informar este error, incluye la siguiente informaci\xF3n:",
|
|
3064
|
+
"error.footer.copy": "Copiar",
|
|
3065
|
+
"error.action.go-back": "Regresar",
|
|
3066
|
+
"identities.messages.1010020": "",
|
|
3067
|
+
"identities.messages.1050020": 'Eliminar passkey "{display_name}"'
|
|
2744
3068
|
};
|
|
2745
3069
|
|
|
2746
3070
|
// src/locales/fr.json
|
|
@@ -2931,81 +3255,10 @@ var fr_default = {
|
|
|
2931
3255
|
"two-step.totp.description": "Utilisez un code \xE0 usage unique \xE0 6 chiffres provenant de votre application d'authentification",
|
|
2932
3256
|
"two-step.lookup_secret.title": "Code de r\xE9cup\xE9ration de secours",
|
|
2933
3257
|
"two-step.lookup_secret.description": "Utilisez l'un de vos codes de secours \xE0 8 chiffres pour vous authentifier",
|
|
2934
|
-
"identities.messages.1010023": "",
|
|
2935
|
-
"identities.messages.1070015": "",
|
|
2936
|
-
"identities.messages.4000038": "",
|
|
2937
|
-
"login.cancel-button": "",
|
|
2938
|
-
"login.cancel-label": "",
|
|
2939
|
-
"identities.messages.1010016": "",
|
|
2940
|
-
"identities.messages.1010017": "",
|
|
2941
|
-
"identities.messages.1010018": "",
|
|
2942
|
-
"identities.messages.1010019": "",
|
|
2943
|
-
"identities.messages.1010020": "",
|
|
2944
|
-
"identities.messages.1010021": "",
|
|
2945
|
-
"identities.messages.1010022": "",
|
|
2946
|
-
"identities.messages.1040007": "",
|
|
2947
|
-
"identities.messages.1040008": "",
|
|
2948
|
-
"identities.messages.1040009": "",
|
|
2949
|
-
"identities.messages.1050019": "",
|
|
2950
|
-
"identities.messages.1050020": "",
|
|
2951
|
-
"identities.messages.1070014": "",
|
|
2952
|
-
"identities.messages.4000037": "",
|
|
2953
|
-
"identities.messages.4010009": "",
|
|
2954
|
-
"identities.messages.4010010": "",
|
|
2955
|
-
"input.placeholder": "",
|
|
2956
|
-
"card.header.description.login": "",
|
|
2957
|
-
"card.header.description.registration": "",
|
|
2958
|
-
"card.header.parts.code": "",
|
|
2959
|
-
"card.header.parts.identifier-first": "",
|
|
2960
|
-
"card.header.parts.oidc": "",
|
|
2961
|
-
"card.header.parts.passkey": "",
|
|
2962
|
-
"card.header.parts.password.login": "",
|
|
2963
|
-
"card.header.parts.password.registration": "",
|
|
2964
|
-
"card.header.parts.webauthn": "",
|
|
2965
|
-
"forms.label.forgot-password": "",
|
|
2966
|
-
"login.subtitle": "",
|
|
2967
|
-
"login.subtitle-refresh": "",
|
|
2968
|
-
"misc.or": "",
|
|
2969
|
-
"recovery.subtitle": "",
|
|
2970
|
-
"registration.subtitle": "",
|
|
2971
|
-
"settings.subtitle": "",
|
|
2972
|
-
"verification.subtitle": "",
|
|
2973
3258
|
"settings.totp.info.linked": "Vous avez actuellement une application d'authentification connect\xE9e.",
|
|
2974
3259
|
"settings.totp.info.not-linked": "Pour activer, scannez le QR code avec votre authentificateur et entrez le code.",
|
|
2975
3260
|
"settings.totp.title": "Application d'authentification",
|
|
2976
3261
|
"settings.totp.description": "Ajoutez une application d'authentification TOTP \xE0 votre compte pour am\xE9liorer la s\xE9curit\xE9 de votre compte. Les applications d'authentification populaires sont LastPass et Google Authenticator.",
|
|
2977
|
-
"settings.lookup_secret.description": "",
|
|
2978
|
-
"settings.lookup_secret.title": "",
|
|
2979
|
-
"settings.navigation.title": "",
|
|
2980
|
-
"settings.oidc.description": "",
|
|
2981
|
-
"settings.oidc.info": "",
|
|
2982
|
-
"settings.oidc.title": "",
|
|
2983
|
-
"settings.passkey.description": "",
|
|
2984
|
-
"settings.passkey.info": "",
|
|
2985
|
-
"settings.passkey.title": "",
|
|
2986
|
-
"settings.password.description": "",
|
|
2987
|
-
"settings.password.title": "",
|
|
2988
|
-
"settings.profile.description": "",
|
|
2989
|
-
"settings.profile.title": "",
|
|
2990
|
-
"settings.title-lookup-secret": "",
|
|
2991
|
-
"settings.title-navigation": "",
|
|
2992
|
-
"settings.title-oidc": "",
|
|
2993
|
-
"settings.title-passkey": "",
|
|
2994
|
-
"settings.title-password": "",
|
|
2995
|
-
"settings.title-profile": "",
|
|
2996
|
-
"settings.title-totp": "",
|
|
2997
|
-
"settings.title-webauthn": "",
|
|
2998
|
-
"settings.webauthn.description": "",
|
|
2999
|
-
"settings.webauthn.info": "",
|
|
3000
|
-
"settings.webauthn.title": "",
|
|
3001
|
-
"card.footer.select-another-method": "",
|
|
3002
|
-
"account-linking.title": "",
|
|
3003
|
-
"property.code": "",
|
|
3004
|
-
"property.email": "",
|
|
3005
|
-
"property.identifier": "",
|
|
3006
|
-
"property.password": "",
|
|
3007
|
-
"property.phone": "",
|
|
3008
|
-
"property.username": "",
|
|
3009
3262
|
"consent.title": "Autoriser {party}",
|
|
3010
3263
|
"consent.subtitle": "Une application tierce souhaite acc\xE9der aux informations associ\xE9es \xE0 votre compte {identifier}.",
|
|
3011
3264
|
"consent.scope.openid.title": "Identit\xE9",
|
|
@@ -3020,12 +3273,85 @@ var fr_default = {
|
|
|
3020
3273
|
"consent.scope.address.description": "Acc\xE8de \xE0 votre adresse postale.",
|
|
3021
3274
|
"consent.scope.phone.title": "Num\xE9ro de t\xE9l\xE9phone",
|
|
3022
3275
|
"consent.scope.phone.description": "R\xE9cup\xE8re votre num\xE9ro de t\xE9l\xE9phone et son statut de v\xE9rification.",
|
|
3023
|
-
"
|
|
3024
|
-
"
|
|
3025
|
-
"
|
|
3026
|
-
"
|
|
3027
|
-
"
|
|
3028
|
-
"
|
|
3276
|
+
"identities.messages.1010016": "Vous avez essay\xE9 de vous connecter avec \xAB {duplicateIdentifier} \xBB, mais cet e-mail est d\xE9j\xE0 utilis\xE9 par un autre compte. Connectez-vous \xE0 votre compte avec l'une des options ci-dessous pour ajouter votre compte \xAB {duplicateIdentifier} \xBB sur \xAB {provider} \xBB comme autre moyen de vous connecter.",
|
|
3277
|
+
"identities.messages.1010017": "Se connecter et lier",
|
|
3278
|
+
"identities.messages.1010018": "Confirmer avec {provider}",
|
|
3279
|
+
"identities.messages.1010019": "Demander un code pour continuer",
|
|
3280
|
+
"identities.messages.1010021": "Se connecter avec une cl\xE9 d'acc\xE8s",
|
|
3281
|
+
"identities.messages.1010022": "Se connecter avec un mot de passe",
|
|
3282
|
+
"identities.messages.1010023": "Envoyer le code \xE0 {address}",
|
|
3283
|
+
"identities.messages.1040007": "S'inscrire avec une cl\xE9 d'acc\xE8s",
|
|
3284
|
+
"identities.messages.1040008": "Retour",
|
|
3285
|
+
"identities.messages.1040009": "Veuillez choisir une identification pour vous authentifier.",
|
|
3286
|
+
"identities.messages.1050019": "Ajouter une cl\xE9 d'acc\xE8s",
|
|
3287
|
+
"identities.messages.1050020": "Supprimer la cl\xE9 d'acc\xE8s \xAB {display_name} \xBB",
|
|
3288
|
+
"identities.messages.1070014": "Se connecter et lier l'identification",
|
|
3289
|
+
"identities.messages.1070015": "Veuillez compl\xE9ter le d\xE9fi captcha pour continuer.",
|
|
3290
|
+
"identities.messages.4000037": "Ce compte n'existe pas ou n'a aucune m\xE9thode de connexion configur\xE9e.",
|
|
3291
|
+
"identities.messages.4000038": "La v\xE9rification Captcha a \xE9chou\xE9, veuillez r\xE9essayer.",
|
|
3292
|
+
"identities.messages.4010009": "Les identifications li\xE9es ne correspondent pas.",
|
|
3293
|
+
"identities.messages.4010010": "L'adresse que vous avez saisie ne correspond \xE0 aucune adresse connue dans le compte actuel.",
|
|
3294
|
+
"login.cancel-button": "Annuler",
|
|
3295
|
+
"login.cancel-label": "Ce n'est pas le bon compte\xA0?",
|
|
3296
|
+
"login.subtitle": "Se connecter avec {parts}",
|
|
3297
|
+
"login.subtitle-refresh": "Confirmez votre identit\xE9 avec {parts}",
|
|
3298
|
+
"recovery.subtitle": "Saisissez l'adresse e-mail associ\xE9e \xE0 votre compte pour recevoir un code d'acc\xE8s unique",
|
|
3299
|
+
"registration.subtitle": "S'inscrire avec {parts}",
|
|
3300
|
+
"settings.subtitle": "Mettre \xE0 jour les param\xE8tres de votre compte",
|
|
3301
|
+
"settings.title-lookup-secret": "G\xE9rer les codes de r\xE9cup\xE9ration de sauvegarde 2FA",
|
|
3302
|
+
"settings.title-navigation": "Param\xE8tres du compte",
|
|
3303
|
+
"settings.title-oidc": "Connexion via les r\xE9seaux sociaux",
|
|
3304
|
+
"settings.title-password": "Changer le mot de passe",
|
|
3305
|
+
"settings.title-profile": "Param\xE8tres du profil",
|
|
3306
|
+
"settings.title-totp": "G\xE9rer l'application d'authentification 2FA TOTP",
|
|
3307
|
+
"settings.title-webauthn": "G\xE9rer les jetons mat\xE9riels",
|
|
3308
|
+
"settings.title-passkey": "G\xE9rer les cl\xE9s d'acc\xE8s",
|
|
3309
|
+
"settings.navigation.title": "Param\xE8tres du compte",
|
|
3310
|
+
"settings.password.title": "Changer le mot de passe",
|
|
3311
|
+
"settings.password.description": "Modifier votre mot de passe",
|
|
3312
|
+
"settings.profile.title": "Param\xE8tres du profil",
|
|
3313
|
+
"settings.profile.description": "Mettre \xE0 jour les informations de votre profil",
|
|
3314
|
+
"settings.webauthn.title": "G\xE9rer les jetons mat\xE9riels",
|
|
3315
|
+
"settings.webauthn.description": "G\xE9rer les param\xE8tres de votre jeton mat\xE9riel",
|
|
3316
|
+
"verification.subtitle": "Saisissez l'adresse e-mail associ\xE9e \xE0 votre compte pour la v\xE9rifier",
|
|
3317
|
+
"input.placeholder": "Saisissez votre {placeholder}",
|
|
3318
|
+
"card.header.parts.oidc": "un fournisseur de r\xE9seaux sociaux",
|
|
3319
|
+
"card.header.parts.password.registration": "votre {identifierLabel} et un mot de passe",
|
|
3320
|
+
"card.header.parts.password.login": "votre {identifierLabel} et votre mot de passe",
|
|
3321
|
+
"card.header.parts.passkey": "une cl\xE9 d'acc\xE8s",
|
|
3322
|
+
"card.header.parts.webauthn": "une cl\xE9 de s\xE9curit\xE9",
|
|
3323
|
+
"card.header.parts.identifier-first": "votre {identifierLabel}",
|
|
3324
|
+
"card.header.parts.code": "un code qui vous a \xE9t\xE9 envoy\xE9",
|
|
3325
|
+
"card.header.parts.totp": "votre application d'authentification",
|
|
3326
|
+
"card.header.parts.lookup_secret": "un code de r\xE9cup\xE9ration de secours",
|
|
3327
|
+
"card.header.description.login": "Se connecter avec {identifierLabel}",
|
|
3328
|
+
"card.header.description.registration": "S'inscrire avec {identifierLabel}",
|
|
3329
|
+
"misc.or": "ou",
|
|
3330
|
+
"forms.label.forgot-password": "Mot de passe oubli\xE9?",
|
|
3331
|
+
"settings.lookup_secret.title": "Codes de r\xE9cup\xE9ration de sauvegarde (second facteur)",
|
|
3332
|
+
"settings.lookup_secret.description": "Les codes de r\xE9cup\xE9ration sont une sauvegarde s\xE9curis\xE9e pour l'authentification \xE0 deux facteurs (2FA), vous permettant de retrouver l'acc\xE8s \xE0 votre compte si vous perdez votre appareil 2FA.",
|
|
3333
|
+
"settings.oidc.title": "Comptes connect\xE9s",
|
|
3334
|
+
"settings.oidc.description": "Connectez un fournisseur de connexion sociale \xE0 votre compte.",
|
|
3335
|
+
"settings.oidc.info": "Les comptes connect\xE9s de ces fournisseurs peuvent \xEAtre utilis\xE9s pour vous connecter \xE0 votre compte",
|
|
3336
|
+
"settings.webauthn.info": "Les jetons mat\xE9riels sont utilis\xE9s pour l'authentification \xE0 deux facteurs ou comme premier facteur avec les cl\xE9s d'acc\xE8s",
|
|
3337
|
+
"settings.passkey.title": "G\xE9rer les cl\xE9s d'acc\xE8s",
|
|
3338
|
+
"settings.passkey.description": "G\xE9rer les param\xE8tres de vos cl\xE9s d'acc\xE8s",
|
|
3339
|
+
"settings.passkey.info": "G\xE9rer les param\xE8tres de vos cl\xE9s d'acc\xE8s",
|
|
3340
|
+
"card.footer.select-another-method": "S\xE9lectionner une autre m\xE9thode",
|
|
3341
|
+
"account-linking.title": "Lier le compte",
|
|
3342
|
+
"property.password": "mot de passe",
|
|
3343
|
+
"property.email": "e-mail",
|
|
3344
|
+
"property.phone": "t\xE9l\xE9phone",
|
|
3345
|
+
"property.username": "nom d'utilisateur",
|
|
3346
|
+
"property.identifier": "identifiant",
|
|
3347
|
+
"property.code": "code",
|
|
3348
|
+
"error.title.what-happened": "Que s'est-il pass\xE9?",
|
|
3349
|
+
"error.title.what-can-i-do": "Que puis-je faire?",
|
|
3350
|
+
"error.instructions": "Veuillez r\xE9essayer dans quelques minutes ou contacter l'op\xE9rateur du site Web.",
|
|
3351
|
+
"error.footer.text": "Lorsque vous signalez cette erreur, veuillez inclure les informations suivantes:",
|
|
3352
|
+
"error.footer.copy": "Copier",
|
|
3353
|
+
"error.action.go-back": "Retour",
|
|
3354
|
+
"identities.messages.1010020": ""
|
|
3029
3355
|
};
|
|
3030
3356
|
|
|
3031
3357
|
// src/locales/nl.json
|
|
@@ -3240,7 +3566,9 @@ var nl_default = {
|
|
|
3240
3566
|
"input.placeholder": "",
|
|
3241
3567
|
"card.header.description.login": "",
|
|
3242
3568
|
"card.header.description.registration": "",
|
|
3243
|
-
"card.header.parts.code": "",
|
|
3569
|
+
"card.header.parts.code": "een code die naar je is verzonden",
|
|
3570
|
+
"card.header.parts.totp": "je authenticator-app",
|
|
3571
|
+
"card.header.parts.lookup_secret": "een backup herstelcode",
|
|
3244
3572
|
"card.header.parts.identifier-first": "",
|
|
3245
3573
|
"card.header.parts.oidc": "",
|
|
3246
3574
|
"card.header.parts.passkey": "",
|
|
@@ -3525,13 +3853,15 @@ var pl_default = {
|
|
|
3525
3853
|
"input.placeholder": "",
|
|
3526
3854
|
"card.header.description.login": "",
|
|
3527
3855
|
"card.header.description.registration": "",
|
|
3528
|
-
"card.header.parts.code": "",
|
|
3529
3856
|
"card.header.parts.identifier-first": "",
|
|
3530
3857
|
"card.header.parts.oidc": "",
|
|
3531
3858
|
"card.header.parts.passkey": "",
|
|
3532
3859
|
"card.header.parts.password.login": "",
|
|
3533
3860
|
"card.header.parts.password.registration": "",
|
|
3534
3861
|
"card.header.parts.webauthn": "",
|
|
3862
|
+
"card.header.parts.code": "kod wys\u0142any do Ciebie",
|
|
3863
|
+
"card.header.parts.totp": "Twoja aplikacja uwierzytelniaj\u0105ca",
|
|
3864
|
+
"card.header.parts.lookup_secret": "kod odzyskiwania kopii zapasowej",
|
|
3535
3865
|
"forms.label.forgot-password": "",
|
|
3536
3866
|
"login.subtitle": "",
|
|
3537
3867
|
"login.subtitle-refresh": "",
|
|
@@ -3810,7 +4140,9 @@ var pt_default = {
|
|
|
3810
4140
|
"input.placeholder": "",
|
|
3811
4141
|
"card.header.description.login": "",
|
|
3812
4142
|
"card.header.description.registration": "",
|
|
3813
|
-
"card.header.parts.code": "",
|
|
4143
|
+
"card.header.parts.code": "um c\xF3digo enviado para voc\xEA",
|
|
4144
|
+
"card.header.parts.totp": "seu aplicativo autenticador",
|
|
4145
|
+
"card.header.parts.lookup_secret": "um c\xF3digo de recupera\xE7\xE3o de backup",
|
|
3814
4146
|
"card.header.parts.identifier-first": "",
|
|
3815
4147
|
"card.header.parts.oidc": "",
|
|
3816
4148
|
"card.header.parts.passkey": "",
|
|
@@ -4095,7 +4427,9 @@ var sv_default = {
|
|
|
4095
4427
|
"input.placeholder": "Ange din {placeholder}",
|
|
4096
4428
|
"card.header.description.login": "Logga in med {identifierLabel}",
|
|
4097
4429
|
"card.header.description.registration": "Registrera dig med {identifierLabel}",
|
|
4098
|
-
"card.header.parts.code": "en kod skickad till
|
|
4430
|
+
"card.header.parts.code": "en kod skickad till dig",
|
|
4431
|
+
"card.header.parts.totp": "din autentiseringsapp",
|
|
4432
|
+
"card.header.parts.lookup_secret": "en s\xE4kerhetskopieringskod",
|
|
4099
4433
|
"card.header.parts.identifier-first": "din {identifierLabel}",
|
|
4100
4434
|
"card.header.parts.oidc": "en social leverant\xF6r",
|
|
4101
4435
|
"card.header.parts.passkey": "en Passkey",
|
|
@@ -4180,6 +4514,6 @@ var OryLocales = {
|
|
|
4180
4514
|
sv: sv_default
|
|
4181
4515
|
};
|
|
4182
4516
|
|
|
4183
|
-
export { HeadlessPageHeader, OryCard, OryCardContent, OryCardFooter, OryCardHeader, OryCardValidationMessages, OryConsentCard, OryForm, OryFormGroupDivider, OryFormGroups, OryFormOidcButtons, OryFormSection, OryFormSocialButtonsForm, OryLocales, OryProvider, OrySettingsCard, OryTwoStepCard, messageTestId, uiTextToFormattedMessage, useComponents, useNodeSorter, useOryFlow };
|
|
4517
|
+
export { HeadlessPageHeader, OryCard, OryCardContent, OryCardFooter, OryCardHeader, OryCardValidationMessages, OryConfigurationProvider, OryConsentCard, OryForm, OryFormGroupDivider, OryFormGroups, OryFormOidcButtons, OryFormSection, OryFormSocialButtonsForm, OryLocales, OryProvider, OrySettingsCard, OryTwoStepCard, messageTestId, uiTextToFormattedMessage, useComponents, useNodeSorter, useOryConfiguration, useOryFlow };
|
|
4184
4518
|
//# sourceMappingURL=index.mjs.map
|
|
4185
4519
|
//# sourceMappingURL=index.mjs.map
|