@ory/elements-react 0.0.0-pr.f3c2f07 → 0.0.0-pr.fd92d9ce
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 +174 -0
- package/DEVELOPMENT.md +2 -1
- package/README.md +253 -4
- package/dist/client/index.js +3 -3
- package/dist/index.d.mts +88 -49
- package/dist/index.d.ts +88 -49
- package/dist/index.js +892 -514
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +891 -515
- package/dist/index.mjs.map +1 -1
- package/dist/theme/default/index.css +16 -7
- package/dist/theme/default/index.css.map +1 -1
- package/dist/theme/default/index.d.mts +1 -1
- package/dist/theme/default/index.d.ts +1 -1
- package/dist/theme/default/index.js +3589 -3254
- package/dist/theme/default/index.js.map +1 -1
- package/dist/theme/default/index.mjs +3688 -3334
- package/dist/theme/default/index.mjs.map +1 -1
- package/dist/theme/default/tailwind/defaults.d.mts +737 -0
- package/dist/theme/default/tailwind/defaults.d.ts +737 -0
- package/package.json +17 -16
- package/tailwind/generated/default-variables.css +1 -1
- 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) {
|
|
@@ -189,21 +176,32 @@ function nodesToAuthMethodGroups(nodes, excludeAuthMethods = []) {
|
|
|
189
176
|
].includes(group)
|
|
190
177
|
);
|
|
191
178
|
}
|
|
192
|
-
function useNodesGroups(nodes) {
|
|
179
|
+
function useNodesGroups(nodes, { omit } = {}) {
|
|
193
180
|
const groupSorter = useGroupSorter();
|
|
194
181
|
const groups = react.useMemo(() => {
|
|
195
|
-
var _a;
|
|
182
|
+
var _a, _b;
|
|
196
183
|
const groups2 = {};
|
|
184
|
+
const groupRetained = {};
|
|
197
185
|
for (const node of nodes) {
|
|
198
|
-
if (node.type === "script") {
|
|
199
|
-
continue;
|
|
200
|
-
}
|
|
201
186
|
const groupNodes = (_a = groups2[node.group]) != null ? _a : [];
|
|
202
187
|
groupNodes.push(node);
|
|
203
188
|
groups2[node.group] = groupNodes;
|
|
189
|
+
if ((omit == null ? void 0 : omit.includes("script")) && clientFetch.isUiNodeScriptAttributes(node.attributes)) {
|
|
190
|
+
continue;
|
|
191
|
+
}
|
|
192
|
+
if ((omit == null ? void 0 : omit.includes("input_hidden")) && clientFetch.isUiNodeInputAttributes(node.attributes) && node.attributes.type === "hidden") {
|
|
193
|
+
continue;
|
|
194
|
+
}
|
|
195
|
+
groupRetained[node.group] = ((_b = groupRetained[node.group]) != null ? _b : 0) + 1;
|
|
204
196
|
}
|
|
205
|
-
|
|
206
|
-
|
|
197
|
+
const finalGroups = {};
|
|
198
|
+
for (const [group, count] of Object.entries(groupRetained)) {
|
|
199
|
+
if (count > 0) {
|
|
200
|
+
finalGroups[group] = groups2[group];
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return finalGroups;
|
|
204
|
+
}, [nodes, omit]);
|
|
207
205
|
const entries = react.useMemo(
|
|
208
206
|
() => Object.entries(groups).sort(([a], [b]) => groupSorter(a, b)),
|
|
209
207
|
[groups, groupSorter]
|
|
@@ -216,6 +214,93 @@ function useNodesGroups(nodes) {
|
|
|
216
214
|
var findNode = (nodes, opt) => nodes.find((n) => {
|
|
217
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);
|
|
218
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
|
+
};
|
|
219
304
|
|
|
220
305
|
// src/context/form-state.ts
|
|
221
306
|
function findMethodWithMessage(nodes) {
|
|
@@ -237,9 +322,9 @@ function parseStateFromFlow(flow) {
|
|
|
237
322
|
return { current: "method_active", method: "code" };
|
|
238
323
|
} else if (methodWithMessage) {
|
|
239
324
|
return { current: "method_active", method: methodWithMessage.group };
|
|
240
|
-
} else if (flow.flow.
|
|
241
|
-
|
|
242
|
-
)) {
|
|
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)) {
|
|
243
328
|
return { current: "method_active", method: flow.flow.active };
|
|
244
329
|
} else if (isChoosingMethod(flow)) {
|
|
245
330
|
const authMethods = nodesToAuthMethodGroups(flow.flow.ui.nodes);
|
|
@@ -247,8 +332,6 @@ function parseStateFromFlow(flow) {
|
|
|
247
332
|
return { current: "method_active", method: authMethods[0] };
|
|
248
333
|
}
|
|
249
334
|
return { current: "select_method" };
|
|
250
|
-
} else if ((_a = flow.flow.ui.messages) == null ? void 0 : _a.some((m) => m.id === 1010016)) {
|
|
251
|
-
return { current: "select_method" };
|
|
252
335
|
}
|
|
253
336
|
return { current: "provide_identifier" };
|
|
254
337
|
}
|
|
@@ -277,14 +360,20 @@ function useFormStateReducer(flow) {
|
|
|
277
360
|
const formStateReducer = (state, action2) => {
|
|
278
361
|
switch (action2.type) {
|
|
279
362
|
case "action_flow_update": {
|
|
280
|
-
if (selectedMethod)
|
|
363
|
+
if (selectedMethod) {
|
|
281
364
|
return { current: "method_active", method: selectedMethod };
|
|
365
|
+
}
|
|
282
366
|
return parseStateFromFlow(action2.flow);
|
|
283
367
|
}
|
|
284
368
|
case "action_select_method": {
|
|
285
369
|
setSelectedMethod(action2.method);
|
|
286
370
|
return { current: "method_active", method: action2.method };
|
|
287
371
|
}
|
|
372
|
+
case "action_clear_active_method": {
|
|
373
|
+
return {
|
|
374
|
+
current: "select_method"
|
|
375
|
+
};
|
|
376
|
+
}
|
|
288
377
|
}
|
|
289
378
|
return state;
|
|
290
379
|
};
|
|
@@ -323,6 +412,110 @@ function OryFlowProvider({
|
|
|
323
412
|
}
|
|
324
413
|
);
|
|
325
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
|
+
}
|
|
326
519
|
function mergeTranslations(customTranslations) {
|
|
327
520
|
return Object.keys(customTranslations).reduce((acc, key) => {
|
|
328
521
|
acc[key] = { ...OryLocales[key], ...customTranslations[key] };
|
|
@@ -352,17 +545,18 @@ var IntlProvider = ({
|
|
|
352
545
|
function OryProvider({
|
|
353
546
|
children,
|
|
354
547
|
components: Components,
|
|
548
|
+
config,
|
|
355
549
|
...oryFlowProps
|
|
356
550
|
}) {
|
|
357
551
|
var _a, _b, _c;
|
|
358
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
552
|
+
return /* @__PURE__ */ jsxRuntime.jsx(OryConfigurationProvider, { sdk: config.sdk, project: config.project, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
359
553
|
IntlProvider,
|
|
360
554
|
{
|
|
361
|
-
locale: (_b = (_a =
|
|
362
|
-
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,
|
|
363
557
|
children: /* @__PURE__ */ jsxRuntime.jsx(OryFlowProvider, { ...oryFlowProps, children: /* @__PURE__ */ jsxRuntime.jsx(OryComponentProvider, { components: Components, children }) })
|
|
364
558
|
}
|
|
365
|
-
);
|
|
559
|
+
) });
|
|
366
560
|
}
|
|
367
561
|
function OryCardHeader() {
|
|
368
562
|
const { Card } = useComponents();
|
|
@@ -482,31 +676,143 @@ function OryCardContent({ children }) {
|
|
|
482
676
|
return /* @__PURE__ */ jsxRuntime.jsx(Card.Content, { children });
|
|
483
677
|
}
|
|
484
678
|
|
|
485
|
-
// src/theme/default/utils/form.ts
|
|
486
|
-
function isGroupImmediateSubmit(group) {
|
|
487
|
-
return group === "code";
|
|
488
|
-
}
|
|
489
|
-
function frontendClient(sdkUrl, opts = {}) {
|
|
490
|
-
const config = new clientFetch.Configuration({
|
|
491
|
-
...opts,
|
|
492
|
-
basePath: sdkUrl,
|
|
493
|
-
headers: {
|
|
494
|
-
Accept: "application/json",
|
|
495
|
-
...opts.headers
|
|
496
|
-
}
|
|
497
|
-
});
|
|
498
|
-
return new clientFetch.FrontendApi(config);
|
|
499
|
-
}
|
|
500
|
-
|
|
501
679
|
// src/util/internal.ts
|
|
502
680
|
function replaceWindowFlowId(flow) {
|
|
503
681
|
const url = new URL(window.location.href);
|
|
504
682
|
url.searchParams.set("flow", flow);
|
|
505
683
|
window.location.href = url.toString();
|
|
506
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
|
+
}
|
|
507
813
|
|
|
508
814
|
// src/util/onSubmitLogin.ts
|
|
509
|
-
async function onSubmitLogin({
|
|
815
|
+
async function onSubmitLogin({ flow }, config, {
|
|
510
816
|
setFlowContainer,
|
|
511
817
|
body,
|
|
512
818
|
onRedirect
|
|
@@ -525,7 +831,7 @@ async function onSubmitLogin({ config, flow }, {
|
|
|
525
831
|
window.location.href = // eslint-disable-next-line promise/always-return
|
|
526
832
|
(_a2 = flow.return_to) != null ? _a2 : config.sdk.url + "/self-service/login/browser";
|
|
527
833
|
}).catch(
|
|
528
|
-
|
|
834
|
+
handleFlowError({
|
|
529
835
|
onRestartFlow: (useFlowId) => {
|
|
530
836
|
if (useFlowId) {
|
|
531
837
|
replaceWindowFlowId(useFlowId);
|
|
@@ -535,27 +841,21 @@ async function onSubmitLogin({ config, flow }, {
|
|
|
535
841
|
},
|
|
536
842
|
onValidationError: (body2) => {
|
|
537
843
|
setFlowContainer({
|
|
538
|
-
config,
|
|
539
844
|
flow: body2,
|
|
540
845
|
flowType: clientFetch.FlowType.Login
|
|
541
846
|
});
|
|
542
847
|
},
|
|
543
|
-
onRedirect
|
|
848
|
+
onRedirect,
|
|
849
|
+
config
|
|
544
850
|
})
|
|
545
851
|
);
|
|
546
852
|
}
|
|
547
|
-
async function onSubmitRecovery({
|
|
853
|
+
async function onSubmitRecovery({ flow }, config, {
|
|
548
854
|
setFlowContainer,
|
|
549
855
|
body,
|
|
550
856
|
onRedirect
|
|
551
857
|
}) {
|
|
552
|
-
|
|
553
|
-
if (!config.sdk.url) {
|
|
554
|
-
throw new Error(
|
|
555
|
-
`Please supply your Ory Network SDK url to the Ory Elements configuration.`
|
|
556
|
-
);
|
|
557
|
-
}
|
|
558
|
-
await frontendClient(config.sdk.url, (_a = config.sdk.options) != null ? _a : {}).updateRecoveryFlowRaw({
|
|
858
|
+
await config.sdk.frontend.updateRecoveryFlowRaw({
|
|
559
859
|
flow: flow.id,
|
|
560
860
|
updateRecoveryFlowBody: body
|
|
561
861
|
}).then(async (res) => {
|
|
@@ -568,11 +868,10 @@ async function onSubmitRecovery({ config, flow }, {
|
|
|
568
868
|
}
|
|
569
869
|
setFlowContainer({
|
|
570
870
|
flow: flow2,
|
|
571
|
-
flowType: clientFetch.FlowType.Recovery
|
|
572
|
-
config
|
|
871
|
+
flowType: clientFetch.FlowType.Recovery
|
|
573
872
|
});
|
|
574
873
|
}).catch(
|
|
575
|
-
|
|
874
|
+
handleFlowError({
|
|
576
875
|
onRestartFlow: (useFlowId) => {
|
|
577
876
|
if (useFlowId) {
|
|
578
877
|
replaceWindowFlowId(useFlowId);
|
|
@@ -587,12 +886,12 @@ async function onSubmitRecovery({ config, flow }, {
|
|
|
587
886
|
} else {
|
|
588
887
|
setFlowContainer({
|
|
589
888
|
flow: body2,
|
|
590
|
-
flowType: clientFetch.FlowType.Recovery
|
|
591
|
-
config
|
|
889
|
+
flowType: clientFetch.FlowType.Recovery
|
|
592
890
|
});
|
|
593
891
|
}
|
|
594
892
|
},
|
|
595
|
-
onRedirect
|
|
893
|
+
onRedirect,
|
|
894
|
+
config
|
|
596
895
|
})
|
|
597
896
|
);
|
|
598
897
|
}
|
|
@@ -609,19 +908,12 @@ function handleContinueWithRecoveryUIError(error, config, onRedirect) {
|
|
|
609
908
|
}
|
|
610
909
|
onRedirect(clientFetch.recoveryUrl(config), true);
|
|
611
910
|
}
|
|
612
|
-
async function onSubmitRegistration({
|
|
911
|
+
async function onSubmitRegistration({ flow }, config, {
|
|
613
912
|
setFlowContainer,
|
|
614
913
|
body,
|
|
615
914
|
onRedirect
|
|
616
915
|
}) {
|
|
617
|
-
|
|
618
|
-
if (!config.sdk.url) {
|
|
619
|
-
throw new Error(
|
|
620
|
-
`Please supply your Ory Network SDK url to the Ory Elements configuration.`
|
|
621
|
-
);
|
|
622
|
-
}
|
|
623
|
-
const client = frontendClient(config.sdk.url, (_a = config.sdk.options) != null ? _a : {});
|
|
624
|
-
await client.updateRegistrationFlowRaw({
|
|
916
|
+
await config.sdk.frontend.updateRegistrationFlowRaw({
|
|
625
917
|
flow: flow.id,
|
|
626
918
|
updateRegistrationFlowBody: body
|
|
627
919
|
}).then(async (res) => {
|
|
@@ -634,7 +926,7 @@ async function onSubmitRegistration({ config, flow }, {
|
|
|
634
926
|
}
|
|
635
927
|
onRedirect(clientFetch.registrationUrl(config), true);
|
|
636
928
|
}).catch(
|
|
637
|
-
|
|
929
|
+
handleFlowError({
|
|
638
930
|
onRestartFlow: (useFlowId) => {
|
|
639
931
|
if (useFlowId) {
|
|
640
932
|
replaceWindowFlowId(useFlowId);
|
|
@@ -645,27 +937,20 @@ async function onSubmitRegistration({ config, flow }, {
|
|
|
645
937
|
onValidationError: (body2) => {
|
|
646
938
|
setFlowContainer({
|
|
647
939
|
flow: body2,
|
|
648
|
-
flowType: clientFetch.FlowType.Registration
|
|
649
|
-
config
|
|
940
|
+
flowType: clientFetch.FlowType.Registration
|
|
650
941
|
});
|
|
651
942
|
},
|
|
652
|
-
onRedirect
|
|
943
|
+
onRedirect,
|
|
944
|
+
config
|
|
653
945
|
})
|
|
654
946
|
);
|
|
655
947
|
}
|
|
656
|
-
async function onSubmitSettings({
|
|
948
|
+
async function onSubmitSettings({ flow }, config, {
|
|
657
949
|
setFlowContainer,
|
|
658
950
|
body,
|
|
659
951
|
onRedirect
|
|
660
952
|
}) {
|
|
661
|
-
|
|
662
|
-
if (!config.sdk.url) {
|
|
663
|
-
throw new Error(
|
|
664
|
-
`Please supply your Ory Network SDK url to the Ory Elements configuration.`
|
|
665
|
-
);
|
|
666
|
-
}
|
|
667
|
-
const client = frontendClient(config.sdk.url, (_a = config.sdk.options) != null ? _a : {});
|
|
668
|
-
await client.updateSettingsFlowRaw({
|
|
953
|
+
await config.sdk.frontend.updateSettingsFlowRaw({
|
|
669
954
|
flow: flow.id,
|
|
670
955
|
updateSettingsFlowBody: body
|
|
671
956
|
}).then(async (res) => {
|
|
@@ -678,11 +963,10 @@ async function onSubmitSettings({ config, flow }, {
|
|
|
678
963
|
}
|
|
679
964
|
setFlowContainer({
|
|
680
965
|
flow: body2,
|
|
681
|
-
flowType: clientFetch.FlowType.Settings
|
|
682
|
-
config
|
|
966
|
+
flowType: clientFetch.FlowType.Settings
|
|
683
967
|
});
|
|
684
968
|
}).catch(
|
|
685
|
-
|
|
969
|
+
handleFlowError({
|
|
686
970
|
onRestartFlow: (useFlowId) => {
|
|
687
971
|
if (useFlowId) {
|
|
688
972
|
replaceWindowFlowId(useFlowId);
|
|
@@ -693,11 +977,11 @@ async function onSubmitSettings({ config, flow }, {
|
|
|
693
977
|
onValidationError: (body2) => {
|
|
694
978
|
setFlowContainer({
|
|
695
979
|
flow: body2,
|
|
696
|
-
flowType: clientFetch.FlowType.Settings
|
|
697
|
-
config
|
|
980
|
+
flowType: clientFetch.FlowType.Settings
|
|
698
981
|
});
|
|
699
982
|
},
|
|
700
|
-
onRedirect
|
|
983
|
+
onRedirect,
|
|
984
|
+
config
|
|
701
985
|
})
|
|
702
986
|
).catch((err) => {
|
|
703
987
|
if (clientFetch.isResponseError(err)) {
|
|
@@ -711,28 +995,21 @@ async function onSubmitSettings({ config, flow }, {
|
|
|
711
995
|
}
|
|
712
996
|
});
|
|
713
997
|
}
|
|
714
|
-
async function onSubmitVerification({
|
|
998
|
+
async function onSubmitVerification({ flow }, config, {
|
|
715
999
|
setFlowContainer,
|
|
716
1000
|
body,
|
|
717
1001
|
onRedirect
|
|
718
1002
|
}) {
|
|
719
|
-
|
|
720
|
-
if (!config.sdk.url) {
|
|
721
|
-
throw new Error(
|
|
722
|
-
`Please supply your Ory Network SDK URL to the Ory Elements configuration.`
|
|
723
|
-
);
|
|
724
|
-
}
|
|
725
|
-
await frontendClient(config.sdk.url, (_a = config.sdk.options) != null ? _a : {}).updateVerificationFlowRaw({
|
|
1003
|
+
await config.sdk.frontend.updateVerificationFlowRaw({
|
|
726
1004
|
flow: flow.id,
|
|
727
1005
|
updateVerificationFlowBody: body
|
|
728
1006
|
}).then(
|
|
729
1007
|
async (res) => setFlowContainer({
|
|
730
1008
|
flow: await res.value(),
|
|
731
|
-
flowType: clientFetch.FlowType.Verification
|
|
732
|
-
config
|
|
1009
|
+
flowType: clientFetch.FlowType.Verification
|
|
733
1010
|
})
|
|
734
1011
|
).catch(
|
|
735
|
-
|
|
1012
|
+
handleFlowError({
|
|
736
1013
|
onRestartFlow: (useFlowId) => {
|
|
737
1014
|
if (useFlowId) {
|
|
738
1015
|
replaceWindowFlowId(useFlowId);
|
|
@@ -743,11 +1020,11 @@ async function onSubmitVerification({ config, flow }, {
|
|
|
743
1020
|
onValidationError: (body2) => {
|
|
744
1021
|
setFlowContainer({
|
|
745
1022
|
flow: body2,
|
|
746
|
-
flowType: clientFetch.FlowType.Verification
|
|
747
|
-
config
|
|
1023
|
+
flowType: clientFetch.FlowType.Verification
|
|
748
1024
|
});
|
|
749
1025
|
},
|
|
750
|
-
onRedirect
|
|
1026
|
+
onRedirect,
|
|
1027
|
+
config
|
|
751
1028
|
})
|
|
752
1029
|
);
|
|
753
1030
|
}
|
|
@@ -757,6 +1034,7 @@ var supportsSelectAccountPrompt = ["google", "github"];
|
|
|
757
1034
|
function useOryFormSubmit(onAfterSubmit) {
|
|
758
1035
|
const flowContainer = useOryFlow();
|
|
759
1036
|
const methods = reactHookForm.useFormContext();
|
|
1037
|
+
const config = useOryConfiguration();
|
|
760
1038
|
const handleSuccess = (flow) => {
|
|
761
1039
|
flowContainer.setFlowContainer(flow);
|
|
762
1040
|
methods.reset(computeDefaultValues(flow.flow.ui.nodes));
|
|
@@ -773,7 +1051,7 @@ function useOryFormSubmit(onAfterSubmit) {
|
|
|
773
1051
|
if (submitData.method === "code" && data.code) {
|
|
774
1052
|
submitData.resend = "";
|
|
775
1053
|
}
|
|
776
|
-
await onSubmitLogin(flowContainer, {
|
|
1054
|
+
await onSubmitLogin(flowContainer, config, {
|
|
777
1055
|
onRedirect,
|
|
778
1056
|
setFlowContainer: handleSuccess,
|
|
779
1057
|
body: submitData
|
|
@@ -787,7 +1065,7 @@ function useOryFormSubmit(onAfterSubmit) {
|
|
|
787
1065
|
if (submitData.method === "code" && submitData.code) {
|
|
788
1066
|
submitData.resend = "";
|
|
789
1067
|
}
|
|
790
|
-
await onSubmitRegistration(flowContainer, {
|
|
1068
|
+
await onSubmitRegistration(flowContainer, config, {
|
|
791
1069
|
onRedirect,
|
|
792
1070
|
setFlowContainer: handleSuccess,
|
|
793
1071
|
body: submitData
|
|
@@ -795,7 +1073,7 @@ function useOryFormSubmit(onAfterSubmit) {
|
|
|
795
1073
|
break;
|
|
796
1074
|
}
|
|
797
1075
|
case clientFetch.FlowType.Verification:
|
|
798
|
-
await onSubmitVerification(flowContainer, {
|
|
1076
|
+
await onSubmitVerification(flowContainer, config, {
|
|
799
1077
|
onRedirect,
|
|
800
1078
|
setFlowContainer: handleSuccess,
|
|
801
1079
|
body: data
|
|
@@ -808,7 +1086,7 @@ function useOryFormSubmit(onAfterSubmit) {
|
|
|
808
1086
|
if (data.code) {
|
|
809
1087
|
submitData.email = "";
|
|
810
1088
|
}
|
|
811
|
-
await onSubmitRecovery(flowContainer, {
|
|
1089
|
+
await onSubmitRecovery(flowContainer, config, {
|
|
812
1090
|
onRedirect,
|
|
813
1091
|
setFlowContainer: handleSuccess,
|
|
814
1092
|
body: submitData
|
|
@@ -836,7 +1114,7 @@ function useOryFormSubmit(onAfterSubmit) {
|
|
|
836
1114
|
if ("passkey_remove" in submitData) {
|
|
837
1115
|
submitData.method = "passkey";
|
|
838
1116
|
}
|
|
839
|
-
await onSubmitSettings(flowContainer, {
|
|
1117
|
+
await onSubmitSettings(flowContainer, config, {
|
|
840
1118
|
onRedirect,
|
|
841
1119
|
setFlowContainer: handleSuccess,
|
|
842
1120
|
body: submitData
|
|
@@ -870,7 +1148,11 @@ function useOryFormSubmit(onAfterSubmit) {
|
|
|
870
1148
|
};
|
|
871
1149
|
return onSubmit;
|
|
872
1150
|
}
|
|
873
|
-
function OryForm({
|
|
1151
|
+
function OryForm({
|
|
1152
|
+
children,
|
|
1153
|
+
onAfterSubmit,
|
|
1154
|
+
"data-testid": dataTestId
|
|
1155
|
+
}) {
|
|
874
1156
|
const { Form } = useComponents();
|
|
875
1157
|
const flowContainer = useOryFlow();
|
|
876
1158
|
const methods = reactHookForm.useFormContext();
|
|
@@ -879,6 +1161,9 @@ function OryForm({ children, onAfterSubmit }) {
|
|
|
879
1161
|
const onSubmit = useOryFormSubmit(onAfterSubmit);
|
|
880
1162
|
const hasMethods = flowContainer.flow.ui.nodes.some((node) => {
|
|
881
1163
|
if (clientFetch.isUiNodeInputAttributes(node.attributes)) {
|
|
1164
|
+
if (node.attributes.type === "hidden") {
|
|
1165
|
+
return false;
|
|
1166
|
+
}
|
|
882
1167
|
return node.attributes.name !== "csrf_token";
|
|
883
1168
|
} else if (clientFetch.isUiNodeAnchorAttributes(node.attributes)) {
|
|
884
1169
|
return true;
|
|
@@ -898,17 +1183,15 @@ function OryForm({ children, onAfterSubmit }) {
|
|
|
898
1183
|
}),
|
|
899
1184
|
type: "error"
|
|
900
1185
|
};
|
|
901
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
902
|
-
/* @__PURE__ */ jsxRuntime.jsx(Message.Root, { children: /* @__PURE__ */ jsxRuntime.jsx(Message.Content, { message: m }, m.id) }),
|
|
903
|
-
/* @__PURE__ */ jsxRuntime.jsx(OryCardFooter, {})
|
|
904
|
-
] });
|
|
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) }) });
|
|
905
1187
|
}
|
|
906
|
-
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") {
|
|
907
1189
|
methods.setValue("method", "code");
|
|
908
1190
|
}
|
|
909
1191
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
910
1192
|
Form.Root,
|
|
911
1193
|
{
|
|
1194
|
+
"data-testid": dataTestId,
|
|
912
1195
|
action: flowContainer.flow.ui.action,
|
|
913
1196
|
method: flowContainer.flow.ui.method,
|
|
914
1197
|
onSubmit: (e) => void methods.handleSubmit(onSubmit)(e),
|
|
@@ -956,10 +1239,7 @@ var NodeInput = ({
|
|
|
956
1239
|
const isResendNode = ((_a = node.meta.label) == null ? void 0 : _a.id) === 1070008;
|
|
957
1240
|
const isScreenSelectionNode = "name" in node.attributes && node.attributes.name === "screen";
|
|
958
1241
|
const setFormValue = () => {
|
|
959
|
-
if (isResendNode || isScreenSelectionNode || node.group ===
|
|
960
|
-
return;
|
|
961
|
-
}
|
|
962
|
-
if (attrs.value !== void 0) {
|
|
1242
|
+
if (attrs.value && !(isResendNode || isScreenSelectionNode || node.group === clientFetch.UiNodeGroupEnum.Oauth2Consent)) {
|
|
963
1243
|
setValue(attrs.name, attrs.value);
|
|
964
1244
|
}
|
|
965
1245
|
};
|
|
@@ -1001,7 +1281,20 @@ var NodeInput = ({
|
|
|
1001
1281
|
case clientFetch.UiNodeInputAttributesTypeEnum.Submit:
|
|
1002
1282
|
case clientFetch.UiNodeInputAttributesTypeEnum.Button:
|
|
1003
1283
|
if (isSocial) {
|
|
1004
|
-
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
|
+
);
|
|
1005
1298
|
}
|
|
1006
1299
|
if (isResendNode || isScreenSelectionNode) {
|
|
1007
1300
|
return null;
|
|
@@ -1091,6 +1384,37 @@ var Node = ({ node, onClick }) => {
|
|
|
1091
1384
|
}
|
|
1092
1385
|
return null;
|
|
1093
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
|
+
}
|
|
1094
1418
|
function OryFormOidcButtons() {
|
|
1095
1419
|
const {
|
|
1096
1420
|
flow: { ui }
|
|
@@ -1103,7 +1427,7 @@ function OryFormOidcButtons() {
|
|
|
1103
1427
|
if (filteredNodes.length === 0) {
|
|
1104
1428
|
return null;
|
|
1105
1429
|
}
|
|
1106
|
-
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(
|
|
1107
1431
|
Node2.OidcButton,
|
|
1108
1432
|
{
|
|
1109
1433
|
node,
|
|
@@ -1116,36 +1440,88 @@ function OryFormOidcButtons() {
|
|
|
1116
1440
|
setValue("method", node.group);
|
|
1117
1441
|
}
|
|
1118
1442
|
},
|
|
1119
|
-
|
|
1443
|
+
clientFetch.getNodeId(node)
|
|
1120
1444
|
)) });
|
|
1121
1445
|
}
|
|
1122
1446
|
function OryFormSocialButtonsForm() {
|
|
1123
1447
|
const {
|
|
1124
|
-
flow: { ui }
|
|
1448
|
+
flow: { ui },
|
|
1449
|
+
formState
|
|
1125
1450
|
} = useOryFlow();
|
|
1451
|
+
console.log(formState);
|
|
1126
1452
|
const filteredNodes = ui.nodes.filter(
|
|
1127
1453
|
(node) => node.group === clientFetch.UiNodeGroupEnum.Saml || node.group === clientFetch.UiNodeGroupEnum.Oidc
|
|
1128
1454
|
);
|
|
1129
1455
|
if (filteredNodes.length === 0) {
|
|
1130
1456
|
return null;
|
|
1131
1457
|
}
|
|
1132
|
-
return /* @__PURE__ */ jsxRuntime.jsx(OryFormProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(OryForm, { children: /* @__PURE__ */ jsxRuntime.jsx(OryFormOidcButtons, {}) }) });
|
|
1133
|
-
}
|
|
1134
|
-
function isUINodeGroupEnum(method) {
|
|
1135
|
-
return Object.values(clientFetch.UiNodeGroupEnum).includes(method);
|
|
1458
|
+
return /* @__PURE__ */ jsxRuntime.jsx(OryFormProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(OryForm, { "data-testid": `ory/form/methods/oidc-saml`, children: /* @__PURE__ */ jsxRuntime.jsx(OryFormOidcButtons, {}) }) });
|
|
1136
1459
|
}
|
|
1137
|
-
function
|
|
1138
|
-
var _a, _b, _c, _d;
|
|
1460
|
+
function OryTwoStepCardStateProvideIdentifier() {
|
|
1139
1461
|
const { Form, Card } = useComponents();
|
|
1140
|
-
const {
|
|
1141
|
-
const { ui } = flow;
|
|
1462
|
+
const { flowType, flow, dispatchFormState } = useOryFlow();
|
|
1142
1463
|
const nodeSorter = useNodeSorter();
|
|
1143
1464
|
const sortNodes = (a, b) => nodeSorter(a, b, { flowType });
|
|
1144
|
-
const
|
|
1145
|
-
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(
|
|
1146
1522
|
Object.values(clientFetch.UiNodeGroupEnum).filter((group) => {
|
|
1147
|
-
var
|
|
1148
|
-
return (
|
|
1523
|
+
var _a;
|
|
1524
|
+
return (_a = visibleGroups[group]) == null ? void 0 : _a.length;
|
|
1149
1525
|
}).filter(
|
|
1150
1526
|
(group) => ![
|
|
1151
1527
|
clientFetch.UiNodeGroupEnum.Oidc,
|
|
@@ -1157,7 +1533,19 @@ function OryTwoStepCard() {
|
|
|
1157
1533
|
].includes(group)
|
|
1158
1534
|
).map((g) => [g, {}])
|
|
1159
1535
|
);
|
|
1160
|
-
|
|
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);
|
|
1548
|
+
if (clientFetch.UiNodeGroupEnum.Code in authMethodBlocks) {
|
|
1161
1549
|
let identifier = (_b = (_a = findNode(ui.nodes, {
|
|
1162
1550
|
group: "identifier_first",
|
|
1163
1551
|
node_type: "input",
|
|
@@ -1169,7 +1557,7 @@ function OryTwoStepCard() {
|
|
|
1169
1557
|
name: "address"
|
|
1170
1558
|
})) == null ? void 0 : _c.attributes) == null ? void 0 : _d.value);
|
|
1171
1559
|
if (identifier) {
|
|
1172
|
-
|
|
1560
|
+
authMethodBlocks[clientFetch.UiNodeGroupEnum.Code] = {
|
|
1173
1561
|
title: {
|
|
1174
1562
|
id: "identities.messages.1010023",
|
|
1175
1563
|
values: { address: identifier }
|
|
@@ -1177,89 +1565,58 @@ function OryTwoStepCard() {
|
|
|
1177
1565
|
};
|
|
1178
1566
|
}
|
|
1179
1567
|
}
|
|
1180
|
-
const
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
}
|
|
1186
|
-
|
|
1187
|
-
dispatchFormState({
|
|
1188
|
-
type: "action_select_method",
|
|
1189
|
-
method
|
|
1190
|
-
});
|
|
1191
|
-
}
|
|
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"
|
|
1192
1575
|
};
|
|
1193
|
-
const hasSso = ui.nodes.some(
|
|
1194
|
-
(node) => node.group === clientFetch.UiNodeGroupEnum.Oidc || node.group === clientFetch.UiNodeGroupEnum.Saml
|
|
1195
|
-
);
|
|
1196
|
-
const showSso = !(formState.current === "method_active" && !(formState.method === clientFetch.UiNodeGroupEnum.Oidc || formState.method === clientFetch.UiNodeGroupEnum.Saml));
|
|
1197
|
-
const showSsoDivider = hasSso && nonSsoNodes.filter((n) => {
|
|
1198
|
-
if (clientFetch.isUiNodeInputAttributes(n.attributes)) {
|
|
1199
|
-
return n.attributes.type !== clientFetch.UiNodeInputAttributesTypeEnum.Hidden;
|
|
1200
|
-
} else if (clientFetch.isUiNodeScriptAttributes(n.attributes)) {
|
|
1201
|
-
return false;
|
|
1202
|
-
}
|
|
1203
|
-
return true;
|
|
1204
|
-
}).length > 0;
|
|
1205
1576
|
return /* @__PURE__ */ jsxRuntime.jsxs(OryCard, { children: [
|
|
1206
1577
|
/* @__PURE__ */ jsxRuntime.jsx(OryCardHeader, {}),
|
|
1207
1578
|
/* @__PURE__ */ jsxRuntime.jsxs(OryCardContent, { children: [
|
|
1208
1579
|
/* @__PURE__ */ jsxRuntime.jsx(OryCardValidationMessages, {}),
|
|
1209
|
-
|
|
1210
|
-
/* @__PURE__ */ jsxRuntime.
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
formState.current === "select_method" && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1580
|
+
/* @__PURE__ */ jsxRuntime.jsx(OryFormSocialButtonsForm, {}),
|
|
1581
|
+
Object.entries(authMethodBlocks).length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1582
|
+
OryForm,
|
|
1583
|
+
{
|
|
1584
|
+
"data-testid": `ory/form/methods/local`,
|
|
1585
|
+
onAfterSubmit: handleAfterFormSubmit(dispatchFormState),
|
|
1586
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(Form.Group, { children: [
|
|
1217
1587
|
/* @__PURE__ */ jsxRuntime.jsx(Card.Divider, {}),
|
|
1218
1588
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1219
1589
|
AuthMethodList,
|
|
1220
1590
|
{
|
|
1221
|
-
options,
|
|
1591
|
+
options: authMethodBlocks,
|
|
1222
1592
|
setSelectedGroup: (group) => dispatchFormState({
|
|
1223
1593
|
type: "action_select_method",
|
|
1224
1594
|
method: group
|
|
1225
1595
|
})
|
|
1226
1596
|
}
|
|
1227
1597
|
),
|
|
1228
|
-
|
|
1229
|
-
] }),
|
|
1230
|
-
formState.current === "method_active" && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1231
|
-
ui.nodes.filter((n) => n.type === "script").map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k)),
|
|
1232
|
-
finalNodes.sort(sortNodes).map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k))
|
|
1598
|
+
authMethodAdditionalNodes.sort(sortNodes).map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k))
|
|
1233
1599
|
] })
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1600
|
+
}
|
|
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, {})
|
|
1238
1604
|
] });
|
|
1239
1605
|
}
|
|
1240
|
-
function
|
|
1241
|
-
const {
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
}
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
};
|
|
1254
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Card.AuthMethodListContainer, { children: Object.entries(options).map(([group, options2]) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1255
|
-
Card.AuthMethodListItem,
|
|
1256
|
-
{
|
|
1257
|
-
group,
|
|
1258
|
-
title: options2.title,
|
|
1259
|
-
onClick: () => handleClick(group, options2)
|
|
1260
|
-
},
|
|
1261
|
-
group
|
|
1262
|
-
)) });
|
|
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 });
|
|
1615
|
+
}
|
|
1616
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1617
|
+
"unknown form state: ",
|
|
1618
|
+
formState.current
|
|
1619
|
+
] });
|
|
1263
1620
|
}
|
|
1264
1621
|
function OryFormGroups({ groups }) {
|
|
1265
1622
|
const {
|
|
@@ -1269,8 +1626,8 @@ function OryFormGroups({ groups }) {
|
|
|
1269
1626
|
const { flowType } = useOryFlow();
|
|
1270
1627
|
const { Form } = useComponents();
|
|
1271
1628
|
const nodes = ui.nodes.filter((node) => groups.indexOf(node.group) > -1).sort((a, b) => nodeSorter(a, b, { flowType }));
|
|
1272
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Form.Group, { children: nodes.map((node
|
|
1273
|
-
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));
|
|
1274
1631
|
}) });
|
|
1275
1632
|
}
|
|
1276
1633
|
function OryFormSection({
|
|
@@ -1306,7 +1663,7 @@ function OryConsentCard() {
|
|
|
1306
1663
|
/* @__PURE__ */ jsxRuntime.jsx(OryCardHeader, {}),
|
|
1307
1664
|
/* @__PURE__ */ jsxRuntime.jsx(OryCardContent, { children: /* @__PURE__ */ jsxRuntime.jsxs(OryForm, { children: [
|
|
1308
1665
|
/* @__PURE__ */ jsxRuntime.jsx(Card.Divider, {}),
|
|
1309
|
-
/* @__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))) }),
|
|
1310
1667
|
/* @__PURE__ */ jsxRuntime.jsx(Card.Divider, {}),
|
|
1311
1668
|
/* @__PURE__ */ jsxRuntime.jsx(OryCardFooter, {})
|
|
1312
1669
|
] }) })
|
|
@@ -1665,16 +2022,19 @@ function SettingsSectionContent({ group, nodes }) {
|
|
|
1665
2022
|
const { Card } = useComponents();
|
|
1666
2023
|
const intl = reactIntl.useIntl();
|
|
1667
2024
|
const { flow } = useOryFlow();
|
|
1668
|
-
const
|
|
2025
|
+
const groupedNodes = useNodesGroups(flow.ui.nodes, {
|
|
2026
|
+
// Script nodes are already handled by the parent component.
|
|
2027
|
+
omit: ["script"]
|
|
2028
|
+
});
|
|
1669
2029
|
if (group === clientFetch.UiNodeGroupEnum.Totp) {
|
|
1670
2030
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1671
2031
|
OryFormSection,
|
|
1672
2032
|
{
|
|
1673
|
-
nodes:
|
|
2033
|
+
nodes: groupedNodes.groups.totp,
|
|
1674
2034
|
"data-testid": "ory/screen/settings/group/totp",
|
|
1675
2035
|
children: [
|
|
1676
|
-
/* @__PURE__ */ jsxRuntime.jsx(OrySettingsTotp, { nodes: (_a =
|
|
1677
|
-
(_b =
|
|
2036
|
+
/* @__PURE__ */ jsxRuntime.jsx(OrySettingsTotp, { nodes: (_a = groupedNodes.groups.totp) != null ? _a : [] }),
|
|
2037
|
+
(_b = groupedNodes.groups.default) == null ? void 0 : _b.map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node)))
|
|
1678
2038
|
]
|
|
1679
2039
|
}
|
|
1680
2040
|
);
|
|
@@ -1683,16 +2043,16 @@ function SettingsSectionContent({ group, nodes }) {
|
|
|
1683
2043
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1684
2044
|
OryFormSection,
|
|
1685
2045
|
{
|
|
1686
|
-
nodes:
|
|
2046
|
+
nodes: groupedNodes.groups.lookup_secret,
|
|
1687
2047
|
"data-testid": "ory/screen/settings/group/lookup_secret",
|
|
1688
2048
|
children: [
|
|
1689
2049
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1690
2050
|
OrySettingsRecoveryCodes,
|
|
1691
2051
|
{
|
|
1692
|
-
nodes: (_c =
|
|
2052
|
+
nodes: (_c = groupedNodes.groups.lookup_secret) != null ? _c : []
|
|
1693
2053
|
}
|
|
1694
2054
|
),
|
|
1695
|
-
(_d =
|
|
2055
|
+
(_d = groupedNodes.groups.default) == null ? void 0 : _d.map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node)))
|
|
1696
2056
|
]
|
|
1697
2057
|
}
|
|
1698
2058
|
);
|
|
@@ -1701,11 +2061,11 @@ function SettingsSectionContent({ group, nodes }) {
|
|
|
1701
2061
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1702
2062
|
OryFormSection,
|
|
1703
2063
|
{
|
|
1704
|
-
nodes:
|
|
2064
|
+
nodes: groupedNodes.groups.oidc,
|
|
1705
2065
|
"data-testid": "ory/screen/settings/group/oidc",
|
|
1706
2066
|
children: [
|
|
1707
|
-
/* @__PURE__ */ jsxRuntime.jsx(OrySettingsOidc, { nodes: (_e =
|
|
1708
|
-
(_f =
|
|
2067
|
+
/* @__PURE__ */ jsxRuntime.jsx(OrySettingsOidc, { nodes: (_e = groupedNodes.groups.oidc) != null ? _e : [] }),
|
|
2068
|
+
(_f = groupedNodes.groups.default) == null ? void 0 : _f.map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node)))
|
|
1709
2069
|
]
|
|
1710
2070
|
}
|
|
1711
2071
|
);
|
|
@@ -1714,11 +2074,11 @@ function SettingsSectionContent({ group, nodes }) {
|
|
|
1714
2074
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1715
2075
|
OryFormSection,
|
|
1716
2076
|
{
|
|
1717
|
-
nodes:
|
|
2077
|
+
nodes: groupedNodes.groups.webauthn,
|
|
1718
2078
|
"data-testid": "ory/screen/settings/group/webauthn",
|
|
1719
2079
|
children: [
|
|
1720
|
-
/* @__PURE__ */ jsxRuntime.jsx(OrySettingsWebauthn, { nodes: (_g =
|
|
1721
|
-
(_h =
|
|
2080
|
+
/* @__PURE__ */ jsxRuntime.jsx(OrySettingsWebauthn, { nodes: (_g = groupedNodes.groups.webauthn) != null ? _g : [] }),
|
|
2081
|
+
(_h = groupedNodes.groups.default) == null ? void 0 : _h.map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node)))
|
|
1722
2082
|
]
|
|
1723
2083
|
}
|
|
1724
2084
|
);
|
|
@@ -1727,11 +2087,11 @@ function SettingsSectionContent({ group, nodes }) {
|
|
|
1727
2087
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1728
2088
|
OryFormSection,
|
|
1729
2089
|
{
|
|
1730
|
-
nodes:
|
|
2090
|
+
nodes: groupedNodes.groups.passkey,
|
|
1731
2091
|
"data-testid": "ory/screen/settings/group/passkey",
|
|
1732
2092
|
children: [
|
|
1733
|
-
/* @__PURE__ */ jsxRuntime.jsx(OrySettingsPasskey, { nodes: (_i =
|
|
1734
|
-
(_j =
|
|
2093
|
+
/* @__PURE__ */ jsxRuntime.jsx(OrySettingsPasskey, { nodes: (_i = groupedNodes.groups.passkey) != null ? _i : [] }),
|
|
2094
|
+
(_j = groupedNodes.groups.default) == null ? void 0 : _j.map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node)))
|
|
1735
2095
|
]
|
|
1736
2096
|
}
|
|
1737
2097
|
);
|
|
@@ -1752,30 +2112,30 @@ function SettingsSectionContent({ group, nodes }) {
|
|
|
1752
2112
|
id: `settings.${group}.description`
|
|
1753
2113
|
}),
|
|
1754
2114
|
children: [
|
|
1755
|
-
(_k =
|
|
2115
|
+
(_k = groupedNodes.groups.default) == null ? void 0 : _k.map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node))),
|
|
1756
2116
|
nodes.filter(
|
|
1757
2117
|
(node) => "type" in node.attributes && node.attributes.type !== "submit"
|
|
1758
|
-
).map((node
|
|
2118
|
+
).map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node)))
|
|
1759
2119
|
]
|
|
1760
2120
|
}
|
|
1761
2121
|
),
|
|
1762
2122
|
/* @__PURE__ */ jsxRuntime.jsx(Card.SettingsSectionFooter, { children: nodes.filter(
|
|
1763
2123
|
(node) => "type" in node.attributes && node.attributes.type === "submit"
|
|
1764
|
-
).map((node
|
|
2124
|
+
).map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node))) })
|
|
1765
2125
|
]
|
|
1766
2126
|
}
|
|
1767
2127
|
);
|
|
1768
2128
|
}
|
|
1769
|
-
var
|
|
1770
|
-
(node) =>
|
|
2129
|
+
var onlyScriptNodes = (nodes) => nodes.filter(
|
|
2130
|
+
(node) => clientFetch.isUiNodeScriptAttributes(node.attributes) && node.attributes.id === "webauthn_script"
|
|
1771
2131
|
);
|
|
1772
2132
|
function OrySettingsCard() {
|
|
1773
2133
|
const { flow } = useOryFlow();
|
|
1774
|
-
const uniqueGroups = useNodesGroups(flow.ui.nodes);
|
|
1775
|
-
const
|
|
2134
|
+
const uniqueGroups = useNodesGroups(flow.ui.nodes, { omit: ["script"] });
|
|
2135
|
+
const scriptNodes = onlyScriptNodes(flow.ui.nodes);
|
|
1776
2136
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1777
2137
|
/* @__PURE__ */ jsxRuntime.jsx(OryCardValidationMessages, {}),
|
|
1778
|
-
|
|
2138
|
+
scriptNodes.map((n) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node: n }, clientFetch.getNodeId(n))),
|
|
1779
2139
|
uniqueGroups.entries.map(([group, nodes]) => {
|
|
1780
2140
|
if (group === clientFetch.UiNodeGroupEnum.Default) {
|
|
1781
2141
|
return null;
|
|
@@ -2082,9 +2442,11 @@ var en_default = {
|
|
|
2082
2442
|
"card.header.parts.oidc": "a social provider",
|
|
2083
2443
|
"card.header.parts.password.registration": "your {identifierLabel} and a password",
|
|
2084
2444
|
"card.header.parts.password.login": "your {identifierLabel} and password",
|
|
2085
|
-
"card.header.parts.code": "a code sent to
|
|
2445
|
+
"card.header.parts.code": "a code sent to you",
|
|
2086
2446
|
"card.header.parts.passkey": "a Passkey",
|
|
2087
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",
|
|
2088
2450
|
"card.header.parts.identifier-first": "your {identifierLabel}",
|
|
2089
2451
|
"card.header.description.login": "Sign in with {identifierLabel}",
|
|
2090
2452
|
"card.header.description.registration": "Sign up with {identifierLabel}",
|
|
@@ -2113,18 +2475,18 @@ var en_default = {
|
|
|
2113
2475
|
"property.code": "code",
|
|
2114
2476
|
"consent.title": "Authorize {party}",
|
|
2115
2477
|
"consent.subtitle": "A third party application wants to access information associated with your account {identifier}.",
|
|
2116
|
-
"consent.scope.openid.title": "
|
|
2117
|
-
"consent.scope.openid.description": "
|
|
2478
|
+
"consent.scope.openid.title": "Identity",
|
|
2479
|
+
"consent.scope.openid.description": "Allows the application to verify your identity. This is required for authentication and a trusted login experience.",
|
|
2118
2480
|
"consent.scope.offline_access.title": "Offline Access",
|
|
2119
|
-
"consent.scope.offline_access.description": "
|
|
2120
|
-
"consent.scope.profile.title": "Profile",
|
|
2121
|
-
"consent.scope.profile.description": "
|
|
2481
|
+
"consent.scope.offline_access.description": "Allows this application to keep you signed in even when you're not actively using it.",
|
|
2482
|
+
"consent.scope.profile.title": "Profile Information",
|
|
2483
|
+
"consent.scope.profile.description": "Allows access to your basic profile details, including your username, first name, and last name.",
|
|
2122
2484
|
"consent.scope.email.title": "Email Address",
|
|
2123
|
-
"consent.scope.email.description": "
|
|
2124
|
-
"consent.scope.address.title": "Address",
|
|
2125
|
-
"consent.scope.address.description": "
|
|
2126
|
-
"consent.scope.phone.title": "Phone",
|
|
2127
|
-
"consent.scope.phone.description": "
|
|
2485
|
+
"consent.scope.email.description": "Retrieve your email address and its verification status.",
|
|
2486
|
+
"consent.scope.address.title": "Physical Address",
|
|
2487
|
+
"consent.scope.address.description": "Access your postal address.",
|
|
2488
|
+
"consent.scope.phone.title": "Phone Number",
|
|
2489
|
+
"consent.scope.phone.description": "Retrieve your phone number and its verification status.",
|
|
2128
2490
|
"error.title.what-happened": "What happened?",
|
|
2129
2491
|
"error.title.what-can-i-do": "What can I do?",
|
|
2130
2492
|
"error.instructions": "Please try again in a few minutes or contact the website operator.",
|
|
@@ -2301,7 +2663,7 @@ var de_default = {
|
|
|
2301
2663
|
"two-step.code.description": "Ein Best\xE4tigungscode wird an Ihre E-Mail gesendet.",
|
|
2302
2664
|
"two-step.code.title": "E-Mail-Code",
|
|
2303
2665
|
"two-step.passkey.description": "Verwenden Sie die Fingerabdruck- oder Gesichtserkennung Ihres Ger\xE4ts",
|
|
2304
|
-
"two-step.passkey.title": "
|
|
2666
|
+
"two-step.passkey.title": "Passkey (empfohlen)",
|
|
2305
2667
|
"two-step.password.description": "Geben Sie Ihr Passwort ein, das mit Ihrem Konto verkn\xFCpft ist",
|
|
2306
2668
|
"two-step.password.title": "Passwort",
|
|
2307
2669
|
"two-step.webauthn.title": "Sicherheitsschl\xFCssel",
|
|
@@ -2317,28 +2679,30 @@ var de_default = {
|
|
|
2317
2679
|
"login.cancel-label": "Nicht das richtige Konto?",
|
|
2318
2680
|
"identities.messages.1010023": "Code an {address} senden",
|
|
2319
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.",
|
|
2320
|
-
"identities.messages.1010017": "",
|
|
2321
|
-
"identities.messages.1010018": "",
|
|
2322
|
-
"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",
|
|
2323
2685
|
"identities.messages.1010020": "",
|
|
2324
|
-
"identities.messages.1010021": "",
|
|
2325
|
-
"identities.messages.1010022": "",
|
|
2326
|
-
"identities.messages.1040007": "",
|
|
2327
|
-
"identities.messages.1040008": "",
|
|
2328
|
-
"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.",
|
|
2329
2691
|
"identities.messages.1050019": "Passkey hinzuf\xFCgen",
|
|
2330
|
-
"identities.messages.1050020": "",
|
|
2331
|
-
"identities.messages.4000037": "",
|
|
2332
|
-
"identities.messages.4010009": "",
|
|
2333
|
-
"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.",
|
|
2334
2696
|
"input.placeholder": "{placeholder} eingeben",
|
|
2335
|
-
"card.header.parts.code": "
|
|
2697
|
+
"card.header.parts.code": "ein an Sie gesendeter Code",
|
|
2336
2698
|
"card.header.parts.identifier-first": "Ihr {identifierLabel}",
|
|
2337
2699
|
"card.header.parts.oidc": "ein sozialer Anbieter",
|
|
2338
2700
|
"card.header.parts.passkey": "ein Passkey",
|
|
2339
2701
|
"card.header.parts.password.login": "Ihrer {identifierLabel} und Ihrem Passwort",
|
|
2340
2702
|
"card.header.parts.password.registration": "Ihrer {identifierLabel} und einem Passwort",
|
|
2341
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",
|
|
2342
2706
|
"recovery.subtitle": "Geben Sie die mit Ihrem Konto verkn\xFCpfte E-Mail-Adresse ein, um einen einmaligen Zugangscode zu erhalten",
|
|
2343
2707
|
"verification.subtitle": "Geben Sie die mit Ihrem Konto verkn\xFCpfte E-Mail-Adresse ein, um es zu best\xE4tigen",
|
|
2344
2708
|
"card.header.description.login": "Melden Sie sich mit {identifierLabel} an",
|
|
@@ -2396,20 +2760,20 @@ var de_default = {
|
|
|
2396
2760
|
"property.phone": "Telefon",
|
|
2397
2761
|
"property.code": "Code",
|
|
2398
2762
|
"property.username": "Benutzername",
|
|
2399
|
-
"consent.title": "",
|
|
2400
|
-
"consent.subtitle": "",
|
|
2401
|
-
"consent.scope.openid.title": "",
|
|
2402
|
-
"consent.scope.openid.description": "",
|
|
2403
|
-
"consent.scope.offline_access.title": "",
|
|
2404
|
-
"consent.scope.offline_access.description": "",
|
|
2405
|
-
"consent.scope.profile.title": "",
|
|
2406
|
-
"consent.scope.profile.description": "",
|
|
2407
|
-
"consent.scope.email.title": "",
|
|
2408
|
-
"consent.scope.email.description": "",
|
|
2409
|
-
"consent.scope.address.title": "",
|
|
2410
|
-
"consent.scope.address.description": "",
|
|
2411
|
-
"consent.scope.phone.title": "",
|
|
2412
|
-
"consent.scope.phone.description": "",
|
|
2763
|
+
"consent.title": "Autorisieren {party}",
|
|
2764
|
+
"consent.subtitle": "Eine Drittanbieteranwendung m\xF6chte auf Informationen zugreifen, die mit Ihrem Konto {identifier} verkn\xFCpft sind.",
|
|
2765
|
+
"consent.scope.openid.title": "Identit\xE4t",
|
|
2766
|
+
"consent.scope.openid.description": "Erm\xF6glicht der Anwendung, Ihre Identit\xE4t zu \xFCberpr\xFCfen. Dies ist f\xFCr die Authentifizierung und eine vertrauensw\xFCrdige Login-Erfahrung erforderlich.",
|
|
2767
|
+
"consent.scope.offline_access.title": "Offline-Zugriff",
|
|
2768
|
+
"consent.scope.offline_access.description": "Erm\xF6glicht dieser Anwendung, Sie angemeldet zu lassen, auch wenn Sie sie nicht aktiv nutzen.",
|
|
2769
|
+
"consent.scope.profile.title": "Profilinformationen",
|
|
2770
|
+
"consent.scope.profile.description": "Erm\xF6glicht den Zugriff auf Ihre grundlegenden Profildetails, einschlie\xDFlich Ihres Benutzernamens, Vornamens und Nachnamens.",
|
|
2771
|
+
"consent.scope.email.title": "E-Mail-Adresse",
|
|
2772
|
+
"consent.scope.email.description": "Erm\xF6glicht den Abruf Ihrer E-Mail-Adresse und deren \xDCberpr\xFCfungsstatus.",
|
|
2773
|
+
"consent.scope.address.title": "Physische Adresse",
|
|
2774
|
+
"consent.scope.address.description": "Erm\xF6glicht den Zugriff auf Ihre Postanschrift.",
|
|
2775
|
+
"consent.scope.phone.title": "Telefonnummer",
|
|
2776
|
+
"consent.scope.phone.description": "Erm\xF6glicht den Abruf Ihrer Telefonnummer und deren \xDCberpr\xFCfungsstatus.",
|
|
2413
2777
|
"error.title.what-happened": "Was ist passiert?",
|
|
2414
2778
|
"error.footer.copy": "Kopieren",
|
|
2415
2779
|
"error.footer.text": "Bitte f\xFCgen Sie bei der Meldung dieses Fehlers die folgenden Informationen hinzu:",
|
|
@@ -2431,7 +2795,6 @@ var es_default = {
|
|
|
2431
2795
|
"error.back-button": "Regresar",
|
|
2432
2796
|
"error.description": "Ocurri\xF3 un error con el siguiente mensaje:",
|
|
2433
2797
|
"error.support-email-link": "Si el problema persiste, por favor contacte a <a>{contactSupportEmail}</a>",
|
|
2434
|
-
"error.title": "",
|
|
2435
2798
|
"error.title-internal-server-error": "Error Interno del Servidor",
|
|
2436
2799
|
"error.title-not-found": "404 - P\xE1gina no encontrada",
|
|
2437
2800
|
"identities.messages.1010001": "Iniciar sesi\xF3n",
|
|
@@ -2606,45 +2969,6 @@ var es_default = {
|
|
|
2606
2969
|
"two-step.totp.description": "Utilice un c\xF3digo de un solo uso de 6 d\xEDgitos de su aplicaci\xF3n de autenticaci\xF3n",
|
|
2607
2970
|
"two-step.lookup_secret.title": "C\xF3digo de recuperaci\xF3n de respaldo",
|
|
2608
2971
|
"two-step.lookup_secret.description": "Utilice uno de sus c\xF3digos de respaldo de 8 d\xEDgitos para autenticarse",
|
|
2609
|
-
"identities.messages.1010016": "",
|
|
2610
|
-
"identities.messages.1010017": "",
|
|
2611
|
-
"identities.messages.1010018": "",
|
|
2612
|
-
"identities.messages.1010019": "",
|
|
2613
|
-
"identities.messages.1010020": "",
|
|
2614
|
-
"identities.messages.1010021": "",
|
|
2615
|
-
"identities.messages.1010022": "",
|
|
2616
|
-
"identities.messages.1010023": "",
|
|
2617
|
-
"identities.messages.1040007": "",
|
|
2618
|
-
"identities.messages.1040008": "",
|
|
2619
|
-
"identities.messages.1040009": "",
|
|
2620
|
-
"identities.messages.1050019": "",
|
|
2621
|
-
"identities.messages.1050020": "",
|
|
2622
|
-
"identities.messages.1070014": "",
|
|
2623
|
-
"identities.messages.1070015": "",
|
|
2624
|
-
"identities.messages.4000037": "",
|
|
2625
|
-
"identities.messages.4000038": "",
|
|
2626
|
-
"identities.messages.4010009": "",
|
|
2627
|
-
"identities.messages.4010010": "",
|
|
2628
|
-
"login.cancel-button": "",
|
|
2629
|
-
"login.cancel-label": "",
|
|
2630
|
-
"input.placeholder": "",
|
|
2631
|
-
"card.header.description.login": "",
|
|
2632
|
-
"card.header.description.registration": "",
|
|
2633
|
-
"card.header.parts.code": "",
|
|
2634
|
-
"card.header.parts.identifier-first": "",
|
|
2635
|
-
"card.header.parts.oidc": "",
|
|
2636
|
-
"card.header.parts.passkey": "",
|
|
2637
|
-
"card.header.parts.password.login": "",
|
|
2638
|
-
"card.header.parts.password.registration": "",
|
|
2639
|
-
"card.header.parts.webauthn": "",
|
|
2640
|
-
"forms.label.forgot-password": "",
|
|
2641
|
-
"login.subtitle": "",
|
|
2642
|
-
"login.subtitle-refresh": "",
|
|
2643
|
-
"misc.or": "",
|
|
2644
|
-
"recovery.subtitle": "",
|
|
2645
|
-
"registration.subtitle": "",
|
|
2646
|
-
"settings.subtitle": "",
|
|
2647
|
-
"verification.subtitle": "",
|
|
2648
2972
|
"settings.totp.info.linked": "Actualmente tienes una aplicaci\xF3n de autenticaci\xF3n conectada.",
|
|
2649
2973
|
"settings.totp.info.not-linked": "Para habilitar, escanea el c\xF3digo QR con tu autenticador e ingresa el c\xF3digo.",
|
|
2650
2974
|
"settings.totp.title": "Aplicaci\xF3n Autenticadora",
|
|
@@ -2662,45 +2986,87 @@ var es_default = {
|
|
|
2662
2986
|
"settings.profile.title": "Configuraci\xF3n de Perfil",
|
|
2663
2987
|
"settings.webauthn.description": "Administra la configuraci\xF3n de tu token de hardware",
|
|
2664
2988
|
"settings.webauthn.title": "Gestionar Tokens de Hardware",
|
|
2665
|
-
"
|
|
2666
|
-
"
|
|
2667
|
-
"
|
|
2668
|
-
"
|
|
2669
|
-
"
|
|
2670
|
-
"
|
|
2671
|
-
"
|
|
2672
|
-
"
|
|
2673
|
-
"
|
|
2674
|
-
"
|
|
2675
|
-
"
|
|
2676
|
-
"
|
|
2677
|
-
"
|
|
2678
|
-
"
|
|
2679
|
-
"
|
|
2680
|
-
"
|
|
2681
|
-
"
|
|
2682
|
-
"
|
|
2683
|
-
"
|
|
2684
|
-
"
|
|
2685
|
-
"
|
|
2686
|
-
"
|
|
2687
|
-
"
|
|
2688
|
-
"
|
|
2689
|
-
"
|
|
2690
|
-
"
|
|
2691
|
-
"
|
|
2692
|
-
"
|
|
2693
|
-
"
|
|
2694
|
-
"
|
|
2695
|
-
"
|
|
2696
|
-
"
|
|
2697
|
-
"
|
|
2698
|
-
"
|
|
2699
|
-
"
|
|
2700
|
-
"
|
|
2701
|
-
"
|
|
2702
|
-
"
|
|
2703
|
-
"
|
|
2989
|
+
"consent.title": "Autorizar {party}",
|
|
2990
|
+
"consent.subtitle": "Una aplicaci\xF3n de terceros quiere acceder a la informaci\xF3n asociada a su cuenta {identifier}.",
|
|
2991
|
+
"consent.scope.openid.title": "Identidad",
|
|
2992
|
+
"consent.scope.openid.description": "Permite que la aplicaci\xF3n verifique su identidad. Esto es necesario para la autenticaci\xF3n y una experiencia de inicio de sesi\xF3n confiable.",
|
|
2993
|
+
"consent.scope.offline_access.title": "Acceso sin conexi\xF3n",
|
|
2994
|
+
"consent.scope.offline_access.description": "Permite que esta aplicaci\xF3n le mantenga conectado incluso cuando no la est\xE9 utilizando activamente.",
|
|
2995
|
+
"consent.scope.profile.title": "Informaci\xF3n del perfil",
|
|
2996
|
+
"consent.scope.profile.description": "Permite el acceso a los detalles b\xE1sicos de su perfil, incluyendo su nombre de usuario, nombre y apellido.",
|
|
2997
|
+
"consent.scope.email.title": "Direcci\xF3n de correo electr\xF3nico",
|
|
2998
|
+
"consent.scope.email.description": "Recupere su direcci\xF3n de correo electr\xF3nico y su estado de verificaci\xF3n.",
|
|
2999
|
+
"consent.scope.address.title": "Direcci\xF3n f\xEDsica",
|
|
3000
|
+
"consent.scope.address.description": "Acceda a su direcci\xF3n postal.",
|
|
3001
|
+
"consent.scope.phone.title": "N\xFAmero de tel\xE9fono",
|
|
3002
|
+
"consent.scope.phone.description": "Recupere su n\xFAmero de tel\xE9fono y su estado de verificaci\xF3n.",
|
|
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}"'
|
|
2704
3070
|
};
|
|
2705
3071
|
|
|
2706
3072
|
// src/locales/fr.json
|
|
@@ -2891,101 +3257,103 @@ var fr_default = {
|
|
|
2891
3257
|
"two-step.totp.description": "Utilisez un code \xE0 usage unique \xE0 6 chiffres provenant de votre application d'authentification",
|
|
2892
3258
|
"two-step.lookup_secret.title": "Code de r\xE9cup\xE9ration de secours",
|
|
2893
3259
|
"two-step.lookup_secret.description": "Utilisez l'un de vos codes de secours \xE0 8 chiffres pour vous authentifier",
|
|
2894
|
-
"identities.messages.1010023": "",
|
|
2895
|
-
"identities.messages.1070015": "",
|
|
2896
|
-
"identities.messages.4000038": "",
|
|
2897
|
-
"login.cancel-button": "",
|
|
2898
|
-
"login.cancel-label": "",
|
|
2899
|
-
"identities.messages.1010016": "",
|
|
2900
|
-
"identities.messages.1010017": "",
|
|
2901
|
-
"identities.messages.1010018": "",
|
|
2902
|
-
"identities.messages.1010019": "",
|
|
2903
|
-
"identities.messages.1010020": "",
|
|
2904
|
-
"identities.messages.1010021": "",
|
|
2905
|
-
"identities.messages.1010022": "",
|
|
2906
|
-
"identities.messages.1040007": "",
|
|
2907
|
-
"identities.messages.1040008": "",
|
|
2908
|
-
"identities.messages.1040009": "",
|
|
2909
|
-
"identities.messages.1050019": "",
|
|
2910
|
-
"identities.messages.1050020": "",
|
|
2911
|
-
"identities.messages.1070014": "",
|
|
2912
|
-
"identities.messages.4000037": "",
|
|
2913
|
-
"identities.messages.4010009": "",
|
|
2914
|
-
"identities.messages.4010010": "",
|
|
2915
|
-
"input.placeholder": "",
|
|
2916
|
-
"card.header.description.login": "",
|
|
2917
|
-
"card.header.description.registration": "",
|
|
2918
|
-
"card.header.parts.code": "",
|
|
2919
|
-
"card.header.parts.identifier-first": "",
|
|
2920
|
-
"card.header.parts.oidc": "",
|
|
2921
|
-
"card.header.parts.passkey": "",
|
|
2922
|
-
"card.header.parts.password.login": "",
|
|
2923
|
-
"card.header.parts.password.registration": "",
|
|
2924
|
-
"card.header.parts.webauthn": "",
|
|
2925
|
-
"forms.label.forgot-password": "",
|
|
2926
|
-
"login.subtitle": "",
|
|
2927
|
-
"login.subtitle-refresh": "",
|
|
2928
|
-
"misc.or": "",
|
|
2929
|
-
"recovery.subtitle": "",
|
|
2930
|
-
"registration.subtitle": "",
|
|
2931
|
-
"settings.subtitle": "",
|
|
2932
|
-
"verification.subtitle": "",
|
|
2933
3260
|
"settings.totp.info.linked": "Vous avez actuellement une application d'authentification connect\xE9e.",
|
|
2934
3261
|
"settings.totp.info.not-linked": "Pour activer, scannez le QR code avec votre authentificateur et entrez le code.",
|
|
2935
3262
|
"settings.totp.title": "Application d'authentification",
|
|
2936
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.",
|
|
2937
|
-
"
|
|
2938
|
-
"
|
|
2939
|
-
"
|
|
2940
|
-
"
|
|
2941
|
-
"
|
|
2942
|
-
"
|
|
2943
|
-
"
|
|
2944
|
-
"
|
|
2945
|
-
"
|
|
2946
|
-
"
|
|
2947
|
-
"
|
|
2948
|
-
"
|
|
2949
|
-
"
|
|
2950
|
-
"
|
|
2951
|
-
"
|
|
2952
|
-
"
|
|
2953
|
-
"
|
|
2954
|
-
"
|
|
2955
|
-
"
|
|
2956
|
-
"
|
|
2957
|
-
"
|
|
2958
|
-
"
|
|
2959
|
-
"
|
|
2960
|
-
"
|
|
2961
|
-
"
|
|
2962
|
-
"
|
|
2963
|
-
"
|
|
2964
|
-
"
|
|
2965
|
-
"
|
|
2966
|
-
"
|
|
2967
|
-
"
|
|
2968
|
-
"
|
|
2969
|
-
"
|
|
2970
|
-
"
|
|
2971
|
-
"
|
|
2972
|
-
"
|
|
2973
|
-
"
|
|
2974
|
-
"
|
|
2975
|
-
"
|
|
2976
|
-
"
|
|
2977
|
-
"
|
|
2978
|
-
"
|
|
2979
|
-
"
|
|
2980
|
-
"
|
|
2981
|
-
"
|
|
2982
|
-
"
|
|
2983
|
-
"
|
|
2984
|
-
"
|
|
2985
|
-
"
|
|
2986
|
-
"
|
|
2987
|
-
"
|
|
2988
|
-
"
|
|
3264
|
+
"consent.title": "Autoriser {party}",
|
|
3265
|
+
"consent.subtitle": "Une application tierce souhaite acc\xE9der aux informations associ\xE9es \xE0 votre compte {identifier}.",
|
|
3266
|
+
"consent.scope.openid.title": "Identit\xE9",
|
|
3267
|
+
"consent.scope.openid.description": "Permet \xE0 l'application de v\xE9rifier votre identit\xE9. Cela est n\xE9cessaire pour l'authentification et une exp\xE9rience de connexion fiable.",
|
|
3268
|
+
"consent.scope.offline_access.title": "Acc\xE8s hors ligne",
|
|
3269
|
+
"consent.scope.offline_access.description": "Permet \xE0 cette application de vous maintenir connect\xE9 m\xEAme lorsque vous ne l'utilisez pas activement.",
|
|
3270
|
+
"consent.scope.profile.title": "Informations de profil",
|
|
3271
|
+
"consent.scope.profile.description": "Permet l'acc\xE8s aux d\xE9tails de base de votre profil, y compris votre nom d'utilisateur, pr\xE9nom et nom.",
|
|
3272
|
+
"consent.scope.email.title": "Adresse e-mail",
|
|
3273
|
+
"consent.scope.email.description": "R\xE9cup\xE8re votre adresse e-mail et son statut de v\xE9rification.",
|
|
3274
|
+
"consent.scope.address.title": "Adresse physique",
|
|
3275
|
+
"consent.scope.address.description": "Acc\xE8de \xE0 votre adresse postale.",
|
|
3276
|
+
"consent.scope.phone.title": "Num\xE9ro de t\xE9l\xE9phone",
|
|
3277
|
+
"consent.scope.phone.description": "R\xE9cup\xE8re votre num\xE9ro de t\xE9l\xE9phone et son statut de v\xE9rification.",
|
|
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": ""
|
|
2989
3357
|
};
|
|
2990
3358
|
|
|
2991
3359
|
// src/locales/nl.json
|
|
@@ -3200,7 +3568,9 @@ var nl_default = {
|
|
|
3200
3568
|
"input.placeholder": "",
|
|
3201
3569
|
"card.header.description.login": "",
|
|
3202
3570
|
"card.header.description.registration": "",
|
|
3203
|
-
"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",
|
|
3204
3574
|
"card.header.parts.identifier-first": "",
|
|
3205
3575
|
"card.header.parts.oidc": "",
|
|
3206
3576
|
"card.header.parts.passkey": "",
|
|
@@ -3251,20 +3621,20 @@ var nl_default = {
|
|
|
3251
3621
|
"property.password": "",
|
|
3252
3622
|
"property.phone": "",
|
|
3253
3623
|
"property.username": "",
|
|
3254
|
-
"consent.title": "",
|
|
3255
|
-
"consent.subtitle": "",
|
|
3256
|
-
"consent.scope.openid.title": "",
|
|
3257
|
-
"consent.scope.openid.description": "",
|
|
3258
|
-
"consent.scope.offline_access.title": "",
|
|
3259
|
-
"consent.scope.offline_access.description": "",
|
|
3260
|
-
"consent.scope.profile.title": "",
|
|
3261
|
-
"consent.scope.profile.description": "",
|
|
3262
|
-
"consent.scope.email.title": "",
|
|
3263
|
-
"consent.scope.email.description": "",
|
|
3264
|
-
"consent.scope.address.title": "",
|
|
3265
|
-
"consent.scope.address.description": "",
|
|
3266
|
-
"consent.scope.phone.title": "",
|
|
3267
|
-
"consent.scope.phone.description": "",
|
|
3624
|
+
"consent.title": "Autoriseren {party}",
|
|
3625
|
+
"consent.subtitle": "Een derde partij applicatie wil toegang tot informatie die aan uw account {identifier} is gekoppeld.",
|
|
3626
|
+
"consent.scope.openid.title": "Identiteit",
|
|
3627
|
+
"consent.scope.openid.description": "Stelt de applicatie in staat uw identiteit te verifi\xEBren. Dit is vereist voor authenticatie en een betrouwbare inlogervaring.",
|
|
3628
|
+
"consent.scope.offline_access.title": "Offline toegang",
|
|
3629
|
+
"consent.scope.offline_access.description": "Stelt deze applicatie in staat u ingelogd te houden, zelfs wanneer u deze niet actief gebruikt.",
|
|
3630
|
+
"consent.scope.profile.title": "Profielinformatie",
|
|
3631
|
+
"consent.scope.profile.description": "Geeft toegang tot uw basisprofielgegevens, inclusief uw gebruikersnaam, voornaam en achternaam.",
|
|
3632
|
+
"consent.scope.email.title": "E-mailadres",
|
|
3633
|
+
"consent.scope.email.description": "Haal uw e-mailadres en de verificatiestatus ervan op.",
|
|
3634
|
+
"consent.scope.address.title": "Fysiek adres",
|
|
3635
|
+
"consent.scope.address.description": "Toegang tot uw postadres.",
|
|
3636
|
+
"consent.scope.phone.title": "Telefoonnummer",
|
|
3637
|
+
"consent.scope.phone.description": "Haal uw telefoonnummer en de verificatiestatus ervan op.",
|
|
3268
3638
|
"error.action.go-back": "",
|
|
3269
3639
|
"error.footer.copy": "",
|
|
3270
3640
|
"error.footer.text": "",
|
|
@@ -3485,13 +3855,15 @@ var pl_default = {
|
|
|
3485
3855
|
"input.placeholder": "",
|
|
3486
3856
|
"card.header.description.login": "",
|
|
3487
3857
|
"card.header.description.registration": "",
|
|
3488
|
-
"card.header.parts.code": "",
|
|
3489
3858
|
"card.header.parts.identifier-first": "",
|
|
3490
3859
|
"card.header.parts.oidc": "",
|
|
3491
3860
|
"card.header.parts.passkey": "",
|
|
3492
3861
|
"card.header.parts.password.login": "",
|
|
3493
3862
|
"card.header.parts.password.registration": "",
|
|
3494
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",
|
|
3495
3867
|
"forms.label.forgot-password": "",
|
|
3496
3868
|
"login.subtitle": "",
|
|
3497
3869
|
"login.subtitle-refresh": "",
|
|
@@ -3536,20 +3908,20 @@ var pl_default = {
|
|
|
3536
3908
|
"property.phone": "",
|
|
3537
3909
|
"property.username": "",
|
|
3538
3910
|
"property.identifier": "",
|
|
3539
|
-
"consent.title": "",
|
|
3540
|
-
"consent.subtitle": "",
|
|
3541
|
-
"consent.scope.openid.title": "",
|
|
3542
|
-
"consent.scope.openid.description": "",
|
|
3543
|
-
"consent.scope.offline_access.title": "",
|
|
3544
|
-
"consent.scope.offline_access.description": "",
|
|
3545
|
-
"consent.scope.profile.title": "",
|
|
3546
|
-
"consent.scope.profile.description": "",
|
|
3547
|
-
"consent.scope.email.title": "",
|
|
3548
|
-
"consent.scope.email.description": "",
|
|
3549
|
-
"consent.scope.address.title": "",
|
|
3550
|
-
"consent.scope.address.description": "",
|
|
3551
|
-
"consent.scope.phone.title": "",
|
|
3552
|
-
"consent.scope.phone.description": "",
|
|
3911
|
+
"consent.title": "Autoryzuj {party}",
|
|
3912
|
+
"consent.subtitle": "Aplikacja trzeciej strony chce uzyska\u0107 dost\u0119p do informacji powi\u0105zanych z Twoim kontem {identifier}.",
|
|
3913
|
+
"consent.scope.openid.title": "To\u017Csamo\u015B\u0107",
|
|
3914
|
+
"consent.scope.openid.description": "Pozwala aplikacji zweryfikowa\u0107 Twoj\u0105 to\u017Csamo\u015B\u0107. Jest to wymagane do uwierzytelniania i zapewnienia zaufanej sesji logowania.",
|
|
3915
|
+
"consent.scope.offline_access.title": "Dost\u0119p offline",
|
|
3916
|
+
"consent.scope.offline_access.description": "Pozwala aplikacji utrzyma\u0107 Twoje logowanie, nawet gdy nie korzystasz z niej aktywnie.",
|
|
3917
|
+
"consent.scope.profile.title": "Informacje profilowe",
|
|
3918
|
+
"consent.scope.profile.description": "Pozwala na dost\u0119p do podstawowych danych profilowych, w tym nazwy u\u017Cytkownika, imienia i nazwiska.",
|
|
3919
|
+
"consent.scope.email.title": "Adres e-mail",
|
|
3920
|
+
"consent.scope.email.description": "Pobierz sw\xF3j adres e-mail oraz status jego weryfikacji.",
|
|
3921
|
+
"consent.scope.address.title": "Adres fizyczny",
|
|
3922
|
+
"consent.scope.address.description": "Dost\u0119p do Twojego adresu pocztowego.",
|
|
3923
|
+
"consent.scope.phone.title": "Numer telefonu",
|
|
3924
|
+
"consent.scope.phone.description": "Pobierz sw\xF3j numer telefonu oraz status jego weryfikacji.",
|
|
3553
3925
|
"error.action.go-back": "",
|
|
3554
3926
|
"error.footer.copy": "",
|
|
3555
3927
|
"error.footer.text": "",
|
|
@@ -3770,7 +4142,9 @@ var pt_default = {
|
|
|
3770
4142
|
"input.placeholder": "",
|
|
3771
4143
|
"card.header.description.login": "",
|
|
3772
4144
|
"card.header.description.registration": "",
|
|
3773
|
-
"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",
|
|
3774
4148
|
"card.header.parts.identifier-first": "",
|
|
3775
4149
|
"card.header.parts.oidc": "",
|
|
3776
4150
|
"card.header.parts.passkey": "",
|
|
@@ -3821,20 +4195,20 @@ var pt_default = {
|
|
|
3821
4195
|
"property.password": "",
|
|
3822
4196
|
"property.phone": "",
|
|
3823
4197
|
"property.username": "",
|
|
3824
|
-
"consent.title": "",
|
|
3825
|
-
"consent.subtitle": "",
|
|
3826
|
-
"consent.scope.openid.title": "",
|
|
3827
|
-
"consent.scope.openid.description": "",
|
|
3828
|
-
"consent.scope.offline_access.title": "",
|
|
3829
|
-
"consent.scope.offline_access.description": "",
|
|
3830
|
-
"consent.scope.profile.title": "",
|
|
3831
|
-
"consent.scope.profile.description": "",
|
|
3832
|
-
"consent.scope.email.title": "",
|
|
3833
|
-
"consent.scope.email.description": "",
|
|
3834
|
-
"consent.scope.address.title": "",
|
|
3835
|
-
"consent.scope.address.description": "",
|
|
3836
|
-
"consent.scope.phone.title": "",
|
|
3837
|
-
"consent.scope.phone.description": "",
|
|
4198
|
+
"consent.title": "Autorizar {party}",
|
|
4199
|
+
"consent.subtitle": "Um aplicativo de terceiros deseja acessar as informa\xE7\xF5es associadas \xE0 sua conta {identifier}.",
|
|
4200
|
+
"consent.scope.openid.title": "Identidade",
|
|
4201
|
+
"consent.scope.openid.description": "Permite que a aplica\xE7\xE3o verifique sua identidade. Isso \xE9 necess\xE1rio para a autentica\xE7\xE3o e uma experi\xEAncia de login confi\xE1vel.",
|
|
4202
|
+
"consent.scope.offline_access.title": "Acesso Offline",
|
|
4203
|
+
"consent.scope.offline_access.description": "Permite que este aplicativo mantenha voc\xEA conectado mesmo quando n\xE3o estiver usando-o ativamente.",
|
|
4204
|
+
"consent.scope.profile.title": "Informa\xE7\xF5es do Perfil",
|
|
4205
|
+
"consent.scope.profile.description": "Permite o acesso aos detalhes b\xE1sicos do seu perfil, incluindo seu nome de usu\xE1rio, primeiro nome e sobrenome.",
|
|
4206
|
+
"consent.scope.email.title": "Endere\xE7o de E-mail",
|
|
4207
|
+
"consent.scope.email.description": "Recupere seu endere\xE7o de e-mail e seu status de verifica\xE7\xE3o.",
|
|
4208
|
+
"consent.scope.address.title": "Endere\xE7o F\xEDsico",
|
|
4209
|
+
"consent.scope.address.description": "Acesse seu endere\xE7o postal.",
|
|
4210
|
+
"consent.scope.phone.title": "N\xFAmero de Telefone",
|
|
4211
|
+
"consent.scope.phone.description": "Recupere seu n\xFAmero de telefone e seu status de verifica\xE7\xE3o.",
|
|
3838
4212
|
"error.action.go-back": "",
|
|
3839
4213
|
"error.footer.copy": "",
|
|
3840
4214
|
"error.footer.text": "",
|
|
@@ -4055,7 +4429,9 @@ var sv_default = {
|
|
|
4055
4429
|
"input.placeholder": "Ange din {placeholder}",
|
|
4056
4430
|
"card.header.description.login": "Logga in med {identifierLabel}",
|
|
4057
4431
|
"card.header.description.registration": "Registrera dig med {identifierLabel}",
|
|
4058
|
-
"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",
|
|
4059
4435
|
"card.header.parts.identifier-first": "din {identifierLabel}",
|
|
4060
4436
|
"card.header.parts.oidc": "en social leverant\xF6r",
|
|
4061
4437
|
"card.header.parts.passkey": "en Passkey",
|
|
@@ -4106,20 +4482,20 @@ var sv_default = {
|
|
|
4106
4482
|
"property.username": "anv\xE4ndarnamn",
|
|
4107
4483
|
"property.identifier": "identifier",
|
|
4108
4484
|
"property.code": "kod",
|
|
4109
|
-
"consent.title": "",
|
|
4110
|
-
"consent.subtitle": "",
|
|
4111
|
-
"consent.scope.openid.title": "",
|
|
4112
|
-
"consent.scope.openid.description": "",
|
|
4113
|
-
"consent.scope.offline_access.title": "",
|
|
4114
|
-
"consent.scope.offline_access.description": "",
|
|
4115
|
-
"consent.scope.profile.title": "",
|
|
4116
|
-
"consent.scope.profile.description": "",
|
|
4117
|
-
"consent.scope.email.title": "",
|
|
4118
|
-
"consent.scope.email.description": "",
|
|
4119
|
-
"consent.scope.address.title": "",
|
|
4120
|
-
"consent.scope.address.description": "",
|
|
4121
|
-
"consent.scope.phone.title": "",
|
|
4122
|
-
"consent.scope.phone.description": "",
|
|
4485
|
+
"consent.title": "Auktorisera {party}",
|
|
4486
|
+
"consent.subtitle": "En tredjepartsapplikation vill f\xE5 tillg\xE5ng till information kopplad till ditt konto {identifier}.",
|
|
4487
|
+
"consent.scope.openid.title": "Identitet",
|
|
4488
|
+
"consent.scope.openid.description": "G\xF6r det m\xF6jligt f\xF6r applikationen att verifiera din identitet. Detta kr\xE4vs f\xF6r autentisering och en p\xE5litlig inloggningsupplevelse.",
|
|
4489
|
+
"consent.scope.offline_access.title": "Offline-\xE5tkomst",
|
|
4490
|
+
"consent.scope.offline_access.description": "G\xF6r det m\xF6jligt f\xF6r denna applikation att h\xE5lla dig inloggad \xE4ven n\xE4r du inte aktivt anv\xE4nder den.",
|
|
4491
|
+
"consent.scope.profile.title": "Profilinformation",
|
|
4492
|
+
"consent.scope.profile.description": "Ger tillg\xE5ng till dina grundl\xE4ggande profiluppgifter, inklusive ditt anv\xE4ndarnamn, f\xF6rnamn och efternamn.",
|
|
4493
|
+
"consent.scope.email.title": "E-postadress",
|
|
4494
|
+
"consent.scope.email.description": "H\xE4mta din e-postadress och dess verifieringsstatus.",
|
|
4495
|
+
"consent.scope.address.title": "Fysisk adress",
|
|
4496
|
+
"consent.scope.address.description": "F\xE5 \xE5tkomst till din postadress.",
|
|
4497
|
+
"consent.scope.phone.title": "Telefonnummer",
|
|
4498
|
+
"consent.scope.phone.description": "H\xE4mta ditt telefonnummer och dess verifieringsstatus.",
|
|
4123
4499
|
"error.action.go-back": "",
|
|
4124
4500
|
"error.footer.copy": "",
|
|
4125
4501
|
"error.footer.text": "",
|
|
@@ -4146,6 +4522,7 @@ exports.OryCardContent = OryCardContent;
|
|
|
4146
4522
|
exports.OryCardFooter = OryCardFooter;
|
|
4147
4523
|
exports.OryCardHeader = OryCardHeader;
|
|
4148
4524
|
exports.OryCardValidationMessages = OryCardValidationMessages;
|
|
4525
|
+
exports.OryConfigurationProvider = OryConfigurationProvider;
|
|
4149
4526
|
exports.OryConsentCard = OryConsentCard;
|
|
4150
4527
|
exports.OryForm = OryForm;
|
|
4151
4528
|
exports.OryFormGroupDivider = OryFormGroupDivider;
|
|
@@ -4161,6 +4538,7 @@ exports.messageTestId = messageTestId;
|
|
|
4161
4538
|
exports.uiTextToFormattedMessage = uiTextToFormattedMessage;
|
|
4162
4539
|
exports.useComponents = useComponents;
|
|
4163
4540
|
exports.useNodeSorter = useNodeSorter;
|
|
4541
|
+
exports.useOryConfiguration = useOryConfiguration;
|
|
4164
4542
|
exports.useOryFlow = useOryFlow;
|
|
4165
4543
|
//# sourceMappingURL=index.js.map
|
|
4166
4544
|
//# sourceMappingURL=index.js.map
|