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