@ory/elements-react 0.0.0-pr.4a28a8f → 0.0.0-pr.6a36702c
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 +151 -0
- package/README.md +253 -4
- package/dist/client/frontendClient.d.mts +5 -2
- package/dist/client/frontendClient.d.ts +5 -2
- package/dist/client/frontendClient.js +25 -2
- package/dist/client/frontendClient.js.map +1 -1
- package/dist/client/frontendClient.mjs +25 -2
- package/dist/client/frontendClient.mjs.map +1 -1
- package/dist/client/index.js +3 -3
- package/dist/index.d.mts +113 -51
- package/dist/index.d.ts +113 -51
- package/dist/index.js +978 -418
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +975 -418
- package/dist/index.mjs.map +1 -1
- package/dist/theme/default/index.css +60 -10
- package/dist/theme/default/index.css.map +1 -1
- package/dist/theme/default/index.d.mts +15 -3
- package/dist/theme/default/index.d.ts +15 -3
- package/dist/theme/default/index.js +3767 -2963
- package/dist/theme/default/index.js.map +1 -1
- package/dist/theme/default/index.mjs +3800 -2973
- package/dist/theme/default/index.mjs.map +1 -1
- package/package.json +17 -15
- package/tailwind/generated/default-variables.css +1 -1
- package/tsconfig.json +3 -2
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { UiNodeGroupEnum, isUiNodeInputAttributes, isUiNodeAnchorAttributes, isUiNodeImageAttributes, isUiNodeScriptAttributes, FlowType,
|
|
2
|
-
import { createContext, useContext, useState, useMemo, useReducer,
|
|
1
|
+
import { UiNodeGroupEnum, isUiNodeInputAttributes, isUiNodeAnchorAttributes, isUiNodeImageAttributes, isUiNodeScriptAttributes, FlowType, getNodeId, Configuration, FrontendApi, isUiNodeTextAttributes, UiNodeInputAttributesTypeEnum, handleContinueWith, isResponseError as isResponseError$1, loginUrl, settingsUrl, registrationUrl, FetchError, ResponseError, recoveryUrl, instanceOfContinueWithRecoveryUi, verificationUrl as verificationUrl$1 } from '@ory/client-fetch';
|
|
2
|
+
import { createContext, useContext, useRef, useState, useMemo, useReducer, useEffect } from 'react';
|
|
3
3
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
4
4
|
import { useIntl, IntlProvider as IntlProvider$1 } from 'react-intl';
|
|
5
5
|
import { useFormContext, useForm, FormProvider } from 'react-hook-form';
|
|
@@ -48,13 +48,18 @@ var defaultNodeOrder = [
|
|
|
48
48
|
];
|
|
49
49
|
function defaultNodeSorter(a, b) {
|
|
50
50
|
var _a, _b;
|
|
51
|
+
const aIsCaptcha = a.group === "captcha";
|
|
52
|
+
const bIsCaptcha = b.group === "captcha";
|
|
53
|
+
const aIsSubmit = isUiNodeInputAttributes(a.attributes) && a.attributes.type === "submit";
|
|
54
|
+
const bIsSubmit = isUiNodeInputAttributes(b.attributes) && b.attributes.type === "submit";
|
|
55
|
+
if (aIsCaptcha && bIsSubmit) {
|
|
56
|
+
return -1;
|
|
57
|
+
}
|
|
58
|
+
if (bIsCaptcha && aIsSubmit) {
|
|
59
|
+
return 1;
|
|
60
|
+
}
|
|
51
61
|
const aGroupWeight = (_a = defaultNodeOrder.indexOf(a.group)) != null ? _a : 999;
|
|
52
62
|
const bGroupWeight = (_b = defaultNodeOrder.indexOf(b.group)) != null ? _b : 999;
|
|
53
|
-
if (b.group === "captcha" && isUiNodeInputAttributes(a.attributes) && a.attributes.type === "submit") {
|
|
54
|
-
return aGroupWeight - (bGroupWeight - 2);
|
|
55
|
-
} else if (a.group === "captcha" && isUiNodeInputAttributes(b.attributes) && b.attributes.type === "submit") {
|
|
56
|
-
return aGroupWeight - 2 - bGroupWeight;
|
|
57
|
-
}
|
|
58
63
|
return aGroupWeight - bGroupWeight;
|
|
59
64
|
}
|
|
60
65
|
var defaultGroupOrder = [
|
|
@@ -92,28 +97,10 @@ function OryComponentProvider({
|
|
|
92
97
|
}
|
|
93
98
|
);
|
|
94
99
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
(node) => node.group === UiNodeGroupEnum.IdentifierFirst && "name" in node.attributes && node.attributes.name === "identifier" && node.attributes.type === "hidden"
|
|
100
|
-
) || flow.flowType === FlowType.Login && flow.flow.requested_aal === "aal2";
|
|
101
|
-
}
|
|
102
|
-
function removeSsoNodes(nodes) {
|
|
103
|
-
return nodes.filter(
|
|
104
|
-
(node) => !(node.group === UiNodeGroupEnum.Oidc || node.group === UiNodeGroupEnum.Saml)
|
|
105
|
-
);
|
|
106
|
-
}
|
|
107
|
-
function getFinalNodes(uniqueGroups, selectedGroup) {
|
|
108
|
-
var _a, _b, _c, _d;
|
|
109
|
-
const selectedNodes = selectedGroup ? (_a = uniqueGroups[selectedGroup]) != null ? _a : [] : [];
|
|
110
|
-
return [
|
|
111
|
-
...(_b = uniqueGroups == null ? void 0 : uniqueGroups.identifier_first) != null ? _b : [],
|
|
112
|
-
...(_c = uniqueGroups == null ? void 0 : uniqueGroups.default) != null ? _c : [],
|
|
113
|
-
...(_d = uniqueGroups == null ? void 0 : uniqueGroups.captcha) != null ? _d : []
|
|
114
|
-
].flat().filter(
|
|
115
|
-
(node) => "type" in node.attributes && node.attributes.type === "hidden"
|
|
116
|
-
).concat(selectedNodes);
|
|
100
|
+
|
|
101
|
+
// src/theme/default/utils/form.ts
|
|
102
|
+
function isGroupImmediateSubmit(group) {
|
|
103
|
+
return group === "code";
|
|
117
104
|
}
|
|
118
105
|
function triggerToWindowCall(trigger) {
|
|
119
106
|
if (!trigger) {
|
|
@@ -187,21 +174,32 @@ function nodesToAuthMethodGroups(nodes, excludeAuthMethods = []) {
|
|
|
187
174
|
].includes(group)
|
|
188
175
|
);
|
|
189
176
|
}
|
|
190
|
-
function useNodesGroups(nodes) {
|
|
177
|
+
function useNodesGroups(nodes, { omit } = {}) {
|
|
191
178
|
const groupSorter = useGroupSorter();
|
|
192
179
|
const groups = useMemo(() => {
|
|
193
|
-
var _a;
|
|
180
|
+
var _a, _b;
|
|
194
181
|
const groups2 = {};
|
|
182
|
+
const groupRetained = {};
|
|
195
183
|
for (const node of nodes) {
|
|
196
|
-
if (node.type === "script") {
|
|
197
|
-
continue;
|
|
198
|
-
}
|
|
199
184
|
const groupNodes = (_a = groups2[node.group]) != null ? _a : [];
|
|
200
185
|
groupNodes.push(node);
|
|
201
186
|
groups2[node.group] = groupNodes;
|
|
187
|
+
if ((omit == null ? void 0 : omit.includes("script")) && isUiNodeScriptAttributes(node.attributes)) {
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
190
|
+
if ((omit == null ? void 0 : omit.includes("input_hidden")) && isUiNodeInputAttributes(node.attributes) && node.attributes.type === "hidden") {
|
|
191
|
+
continue;
|
|
192
|
+
}
|
|
193
|
+
groupRetained[node.group] = ((_b = groupRetained[node.group]) != null ? _b : 0) + 1;
|
|
202
194
|
}
|
|
203
|
-
|
|
204
|
-
|
|
195
|
+
const finalGroups = {};
|
|
196
|
+
for (const [group, count] of Object.entries(groupRetained)) {
|
|
197
|
+
if (count > 0) {
|
|
198
|
+
finalGroups[group] = groups2[group];
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
return finalGroups;
|
|
202
|
+
}, [nodes, omit]);
|
|
205
203
|
const entries = useMemo(
|
|
206
204
|
() => Object.entries(groups).sort(([a], [b]) => groupSorter(a, b)),
|
|
207
205
|
[groups, groupSorter]
|
|
@@ -214,6 +212,93 @@ function useNodesGroups(nodes) {
|
|
|
214
212
|
var findNode = (nodes, opt) => nodes.find((n) => {
|
|
215
213
|
return n.attributes.node_type === opt.node_type && (opt.group instanceof RegExp ? n.group.match(opt.group) : n.group === opt.group) && (opt.name && n.attributes.node_type === "input" ? opt.name instanceof RegExp ? n.attributes.name.match(opt.name) : n.attributes.name === opt.name : !opt.name);
|
|
216
214
|
});
|
|
215
|
+
function useFunctionalNodes(nodes) {
|
|
216
|
+
return nodes.filter(
|
|
217
|
+
({ group }) => [
|
|
218
|
+
UiNodeGroupEnum.Default,
|
|
219
|
+
UiNodeGroupEnum.IdentifierFirst,
|
|
220
|
+
UiNodeGroupEnum.Profile,
|
|
221
|
+
UiNodeGroupEnum.Captcha
|
|
222
|
+
].includes(group)
|
|
223
|
+
);
|
|
224
|
+
}
|
|
225
|
+
function isUiNodeGroupEnum(method) {
|
|
226
|
+
return Object.values(UiNodeGroupEnum).includes(method);
|
|
227
|
+
}
|
|
228
|
+
function isSingleSignOnNode(node) {
|
|
229
|
+
return node.group === UiNodeGroupEnum.Oidc || node.group === UiNodeGroupEnum.Saml;
|
|
230
|
+
}
|
|
231
|
+
function hasSingleSignOnNodes(nodes) {
|
|
232
|
+
return nodes.some(isSingleSignOnNode);
|
|
233
|
+
}
|
|
234
|
+
function withoutSingleSignOnNodes(nodes) {
|
|
235
|
+
return nodes.filter((node) => !isSingleSignOnNode(node));
|
|
236
|
+
}
|
|
237
|
+
function isNodeVisible(node) {
|
|
238
|
+
if (isUiNodeScriptAttributes(node.attributes)) {
|
|
239
|
+
return false;
|
|
240
|
+
} else if (isUiNodeInputAttributes(node.attributes)) {
|
|
241
|
+
if (node.attributes.type === "hidden") {
|
|
242
|
+
return false;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
return true;
|
|
246
|
+
}
|
|
247
|
+
function useNodeGroupsWithVisibleNodes(nodes) {
|
|
248
|
+
return useMemo(() => {
|
|
249
|
+
var _a, _b;
|
|
250
|
+
const groups = {};
|
|
251
|
+
const groupRetained = {};
|
|
252
|
+
for (const node of nodes) {
|
|
253
|
+
const groupNodes = (_a = groups[node.group]) != null ? _a : [];
|
|
254
|
+
const groupCount = (_b = groupRetained[node.group]) != null ? _b : 0;
|
|
255
|
+
groupNodes.push(node);
|
|
256
|
+
groups[node.group] = groupNodes;
|
|
257
|
+
if (!isNodeVisible(node)) {
|
|
258
|
+
continue;
|
|
259
|
+
}
|
|
260
|
+
groupRetained[node.group] = groupCount + 1;
|
|
261
|
+
}
|
|
262
|
+
const finalGroups = {};
|
|
263
|
+
for (const [group, count] of Object.entries(groupRetained)) {
|
|
264
|
+
if (count > 0) {
|
|
265
|
+
finalGroups[group] = groups[group];
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
return finalGroups;
|
|
269
|
+
}, [nodes]);
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
// src/components/card/two-step/utils.ts
|
|
273
|
+
function isChoosingMethod(flow) {
|
|
274
|
+
return flow.flow.ui.nodes.some(
|
|
275
|
+
(node) => "name" in node.attributes && node.attributes.name === "screen" && "value" in node.attributes && node.attributes.value === "previous"
|
|
276
|
+
) || flow.flow.ui.nodes.some(
|
|
277
|
+
(node) => node.group === UiNodeGroupEnum.IdentifierFirst && "name" in node.attributes && node.attributes.name === "identifier" && node.attributes.type === "hidden"
|
|
278
|
+
) || flow.flowType === FlowType.Login && flow.flow.requested_aal === "aal2";
|
|
279
|
+
}
|
|
280
|
+
function getFinalNodes(uniqueGroups, selectedGroup) {
|
|
281
|
+
var _a, _b, _c, _d;
|
|
282
|
+
const selectedNodes = selectedGroup ? (_a = uniqueGroups[selectedGroup]) != null ? _a : [] : [];
|
|
283
|
+
return [
|
|
284
|
+
...(_b = uniqueGroups == null ? void 0 : uniqueGroups.identifier_first) != null ? _b : [],
|
|
285
|
+
...(_c = uniqueGroups == null ? void 0 : uniqueGroups.default) != null ? _c : [],
|
|
286
|
+
...(_d = uniqueGroups == null ? void 0 : uniqueGroups.captcha) != null ? _d : []
|
|
287
|
+
].flat().filter(
|
|
288
|
+
(node) => "type" in node.attributes && node.attributes.type === "hidden"
|
|
289
|
+
).concat(selectedNodes);
|
|
290
|
+
}
|
|
291
|
+
var handleAfterFormSubmit = (dispatchFormState) => (method) => {
|
|
292
|
+
if (typeof method !== "string" || !isUiNodeGroupEnum(method)) {
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
if (isGroupImmediateSubmit(method)) {
|
|
296
|
+
dispatchFormState({
|
|
297
|
+
type: "action_select_method",
|
|
298
|
+
method
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
};
|
|
217
302
|
|
|
218
303
|
// src/context/form-state.ts
|
|
219
304
|
function findMethodWithMessage(nodes) {
|
|
@@ -261,6 +346,8 @@ function parseStateFromFlow(flow) {
|
|
|
261
346
|
break;
|
|
262
347
|
case FlowType.Settings:
|
|
263
348
|
return { current: "settings" };
|
|
349
|
+
case FlowType.OAuth2Consent:
|
|
350
|
+
return { current: "method_active", method: "oauth2_consent" };
|
|
264
351
|
}
|
|
265
352
|
console.warn(
|
|
266
353
|
`[Ory/Elements React] Encountered an unknown form state on ${flow.flowType} flow with ID ${flow.flow.id}`
|
|
@@ -273,14 +360,20 @@ function useFormStateReducer(flow) {
|
|
|
273
360
|
const formStateReducer = (state, action2) => {
|
|
274
361
|
switch (action2.type) {
|
|
275
362
|
case "action_flow_update": {
|
|
276
|
-
if (selectedMethod)
|
|
363
|
+
if (selectedMethod) {
|
|
277
364
|
return { current: "method_active", method: selectedMethod };
|
|
365
|
+
}
|
|
278
366
|
return parseStateFromFlow(action2.flow);
|
|
279
367
|
}
|
|
280
368
|
case "action_select_method": {
|
|
281
369
|
setSelectedMethod(action2.method);
|
|
282
370
|
return { current: "method_active", method: action2.method };
|
|
283
371
|
}
|
|
372
|
+
case "action_clear_active_method": {
|
|
373
|
+
return {
|
|
374
|
+
current: "select_method"
|
|
375
|
+
};
|
|
376
|
+
}
|
|
284
377
|
}
|
|
285
378
|
return state;
|
|
286
379
|
};
|
|
@@ -319,6 +412,110 @@ function OryFlowProvider({
|
|
|
319
412
|
}
|
|
320
413
|
);
|
|
321
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 Configuration({
|
|
425
|
+
...opts,
|
|
426
|
+
basePath: sdkUrl,
|
|
427
|
+
credentials: "include",
|
|
428
|
+
headers: {
|
|
429
|
+
Accept: "application/json",
|
|
430
|
+
...opts.headers
|
|
431
|
+
}
|
|
432
|
+
});
|
|
433
|
+
return new 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 = 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 = createContext({
|
|
463
|
+
sdk: computeSdkConfig({}),
|
|
464
|
+
project: defaultProject
|
|
465
|
+
});
|
|
466
|
+
function OryConfigurationProvider({
|
|
467
|
+
children,
|
|
468
|
+
sdk: initialConfig,
|
|
469
|
+
project
|
|
470
|
+
}) {
|
|
471
|
+
const configRef = useRef({
|
|
472
|
+
sdk: computeSdkConfig(initialConfig),
|
|
473
|
+
project: {
|
|
474
|
+
...defaultProject,
|
|
475
|
+
...project
|
|
476
|
+
}
|
|
477
|
+
});
|
|
478
|
+
return /* @__PURE__ */ 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
|
+
}
|
|
322
519
|
function mergeTranslations(customTranslations) {
|
|
323
520
|
return Object.keys(customTranslations).reduce((acc, key) => {
|
|
324
521
|
acc[key] = { ...OryLocales[key], ...customTranslations[key] };
|
|
@@ -348,17 +545,18 @@ var IntlProvider = ({
|
|
|
348
545
|
function OryProvider({
|
|
349
546
|
children,
|
|
350
547
|
components: Components,
|
|
548
|
+
config,
|
|
351
549
|
...oryFlowProps
|
|
352
550
|
}) {
|
|
353
551
|
var _a, _b, _c;
|
|
354
|
-
return /* @__PURE__ */ jsx(
|
|
552
|
+
return /* @__PURE__ */ jsx(OryConfigurationProvider, { sdk: config.sdk, project: config.project, children: /* @__PURE__ */ jsx(
|
|
355
553
|
IntlProvider,
|
|
356
554
|
{
|
|
357
|
-
locale: (_b = (_a =
|
|
358
|
-
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,
|
|
359
557
|
children: /* @__PURE__ */ jsx(OryFlowProvider, { ...oryFlowProps, children: /* @__PURE__ */ jsx(OryComponentProvider, { components: Components, children }) })
|
|
360
558
|
}
|
|
361
|
-
);
|
|
559
|
+
) });
|
|
362
560
|
}
|
|
363
561
|
function OryCardHeader() {
|
|
364
562
|
const { Card } = useComponents();
|
|
@@ -374,6 +572,22 @@ function computeDefaultValues(nodes) {
|
|
|
374
572
|
if (attrs.name === "method" || attrs.type === "submit" || typeof attrs.value === "undefined") {
|
|
375
573
|
return acc;
|
|
376
574
|
}
|
|
575
|
+
if (attrs.name.startsWith("grant_scope")) {
|
|
576
|
+
const scope = attrs.value;
|
|
577
|
+
if (Array.isArray(acc.grant_scope)) {
|
|
578
|
+
return {
|
|
579
|
+
...acc,
|
|
580
|
+
// We want to have all scopes accepted by default, so that the user has to actively uncheck them.
|
|
581
|
+
grant_scope: [...acc.grant_scope, scope]
|
|
582
|
+
};
|
|
583
|
+
} else if (!acc.grant_scope) {
|
|
584
|
+
return {
|
|
585
|
+
...acc,
|
|
586
|
+
grant_scope: [scope]
|
|
587
|
+
};
|
|
588
|
+
}
|
|
589
|
+
return acc;
|
|
590
|
+
}
|
|
377
591
|
return unrollTrait(
|
|
378
592
|
{
|
|
379
593
|
name: attrs.name,
|
|
@@ -462,31 +676,143 @@ function OryCardContent({ children }) {
|
|
|
462
676
|
return /* @__PURE__ */ jsx(Card.Content, { children });
|
|
463
677
|
}
|
|
464
678
|
|
|
465
|
-
// src/theme/default/utils/form.ts
|
|
466
|
-
function isGroupImmediateSubmit(group) {
|
|
467
|
-
return group === "code";
|
|
468
|
-
}
|
|
469
|
-
function frontendClient(sdkUrl, opts = {}) {
|
|
470
|
-
const config = new Configuration({
|
|
471
|
-
...opts,
|
|
472
|
-
basePath: sdkUrl,
|
|
473
|
-
headers: {
|
|
474
|
-
Accept: "application/json",
|
|
475
|
-
...opts.headers
|
|
476
|
-
}
|
|
477
|
-
});
|
|
478
|
-
return new FrontendApi(config);
|
|
479
|
-
}
|
|
480
|
-
|
|
481
679
|
// src/util/internal.ts
|
|
482
680
|
function replaceWindowFlowId(flow) {
|
|
483
681
|
const url = new URL(window.location.href);
|
|
484
682
|
url.searchParams.set("flow", flow);
|
|
485
683
|
window.location.href = url.toString();
|
|
486
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 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 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 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)) {
|
|
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 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 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 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 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 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
|
+
}
|
|
487
813
|
|
|
488
814
|
// src/util/onSubmitLogin.ts
|
|
489
|
-
async function onSubmitLogin({
|
|
815
|
+
async function onSubmitLogin({ flow }, config, {
|
|
490
816
|
setFlowContainer,
|
|
491
817
|
body,
|
|
492
818
|
onRedirect
|
|
@@ -515,27 +841,21 @@ async function onSubmitLogin({ config, flow }, {
|
|
|
515
841
|
},
|
|
516
842
|
onValidationError: (body2) => {
|
|
517
843
|
setFlowContainer({
|
|
518
|
-
config,
|
|
519
844
|
flow: body2,
|
|
520
845
|
flowType: FlowType.Login
|
|
521
846
|
});
|
|
522
847
|
},
|
|
523
|
-
onRedirect
|
|
848
|
+
onRedirect,
|
|
849
|
+
config
|
|
524
850
|
})
|
|
525
851
|
);
|
|
526
852
|
}
|
|
527
|
-
async function onSubmitRecovery({
|
|
853
|
+
async function onSubmitRecovery({ flow }, config, {
|
|
528
854
|
setFlowContainer,
|
|
529
855
|
body,
|
|
530
856
|
onRedirect
|
|
531
857
|
}) {
|
|
532
|
-
|
|
533
|
-
if (!config.sdk.url) {
|
|
534
|
-
throw new Error(
|
|
535
|
-
`Please supply your Ory Network SDK url to the Ory Elements configuration.`
|
|
536
|
-
);
|
|
537
|
-
}
|
|
538
|
-
await frontendClient(config.sdk.url, (_a = config.sdk.options) != null ? _a : {}).updateRecoveryFlowRaw({
|
|
858
|
+
await config.sdk.frontend.updateRecoveryFlowRaw({
|
|
539
859
|
flow: flow.id,
|
|
540
860
|
updateRecoveryFlowBody: body
|
|
541
861
|
}).then(async (res) => {
|
|
@@ -548,8 +868,7 @@ async function onSubmitRecovery({ config, flow }, {
|
|
|
548
868
|
}
|
|
549
869
|
setFlowContainer({
|
|
550
870
|
flow: flow2,
|
|
551
|
-
flowType: FlowType.Recovery
|
|
552
|
-
config
|
|
871
|
+
flowType: FlowType.Recovery
|
|
553
872
|
});
|
|
554
873
|
}).catch(
|
|
555
874
|
handleFlowError({
|
|
@@ -567,12 +886,12 @@ async function onSubmitRecovery({ config, flow }, {
|
|
|
567
886
|
} else {
|
|
568
887
|
setFlowContainer({
|
|
569
888
|
flow: body2,
|
|
570
|
-
flowType: FlowType.Recovery
|
|
571
|
-
config
|
|
889
|
+
flowType: FlowType.Recovery
|
|
572
890
|
});
|
|
573
891
|
}
|
|
574
892
|
},
|
|
575
|
-
onRedirect
|
|
893
|
+
onRedirect,
|
|
894
|
+
config
|
|
576
895
|
})
|
|
577
896
|
);
|
|
578
897
|
}
|
|
@@ -589,19 +908,12 @@ function handleContinueWithRecoveryUIError(error, config, onRedirect) {
|
|
|
589
908
|
}
|
|
590
909
|
onRedirect(recoveryUrl(config), true);
|
|
591
910
|
}
|
|
592
|
-
async function onSubmitRegistration({
|
|
911
|
+
async function onSubmitRegistration({ flow }, config, {
|
|
593
912
|
setFlowContainer,
|
|
594
913
|
body,
|
|
595
914
|
onRedirect
|
|
596
915
|
}) {
|
|
597
|
-
|
|
598
|
-
if (!config.sdk.url) {
|
|
599
|
-
throw new Error(
|
|
600
|
-
`Please supply your Ory Network SDK url to the Ory Elements configuration.`
|
|
601
|
-
);
|
|
602
|
-
}
|
|
603
|
-
const client = frontendClient(config.sdk.url, (_a = config.sdk.options) != null ? _a : {});
|
|
604
|
-
await client.updateRegistrationFlowRaw({
|
|
916
|
+
await config.sdk.frontend.updateRegistrationFlowRaw({
|
|
605
917
|
flow: flow.id,
|
|
606
918
|
updateRegistrationFlowBody: body
|
|
607
919
|
}).then(async (res) => {
|
|
@@ -625,27 +937,20 @@ async function onSubmitRegistration({ config, flow }, {
|
|
|
625
937
|
onValidationError: (body2) => {
|
|
626
938
|
setFlowContainer({
|
|
627
939
|
flow: body2,
|
|
628
|
-
flowType: FlowType.Registration
|
|
629
|
-
config
|
|
940
|
+
flowType: FlowType.Registration
|
|
630
941
|
});
|
|
631
942
|
},
|
|
632
|
-
onRedirect
|
|
943
|
+
onRedirect,
|
|
944
|
+
config
|
|
633
945
|
})
|
|
634
946
|
);
|
|
635
947
|
}
|
|
636
|
-
async function onSubmitSettings({
|
|
948
|
+
async function onSubmitSettings({ flow }, config, {
|
|
637
949
|
setFlowContainer,
|
|
638
950
|
body,
|
|
639
951
|
onRedirect
|
|
640
952
|
}) {
|
|
641
|
-
|
|
642
|
-
if (!config.sdk.url) {
|
|
643
|
-
throw new Error(
|
|
644
|
-
`Please supply your Ory Network SDK url to the Ory Elements configuration.`
|
|
645
|
-
);
|
|
646
|
-
}
|
|
647
|
-
const client = frontendClient(config.sdk.url, (_a = config.sdk.options) != null ? _a : {});
|
|
648
|
-
await client.updateSettingsFlowRaw({
|
|
953
|
+
await config.sdk.frontend.updateSettingsFlowRaw({
|
|
649
954
|
flow: flow.id,
|
|
650
955
|
updateSettingsFlowBody: body
|
|
651
956
|
}).then(async (res) => {
|
|
@@ -658,8 +963,7 @@ async function onSubmitSettings({ config, flow }, {
|
|
|
658
963
|
}
|
|
659
964
|
setFlowContainer({
|
|
660
965
|
flow: body2,
|
|
661
|
-
flowType: FlowType.Settings
|
|
662
|
-
config
|
|
966
|
+
flowType: FlowType.Settings
|
|
663
967
|
});
|
|
664
968
|
}).catch(
|
|
665
969
|
handleFlowError({
|
|
@@ -673,14 +977,14 @@ async function onSubmitSettings({ config, flow }, {
|
|
|
673
977
|
onValidationError: (body2) => {
|
|
674
978
|
setFlowContainer({
|
|
675
979
|
flow: body2,
|
|
676
|
-
flowType: FlowType.Settings
|
|
677
|
-
config
|
|
980
|
+
flowType: FlowType.Settings
|
|
678
981
|
});
|
|
679
982
|
},
|
|
680
|
-
onRedirect
|
|
983
|
+
onRedirect,
|
|
984
|
+
config
|
|
681
985
|
})
|
|
682
986
|
).catch((err) => {
|
|
683
|
-
if (isResponseError(err)) {
|
|
987
|
+
if (isResponseError$1(err)) {
|
|
684
988
|
if (err.response.status === 401) {
|
|
685
989
|
return onRedirect(
|
|
686
990
|
loginUrl(config) + "?return_to=" + settingsUrl(config),
|
|
@@ -691,25 +995,18 @@ async function onSubmitSettings({ config, flow }, {
|
|
|
691
995
|
}
|
|
692
996
|
});
|
|
693
997
|
}
|
|
694
|
-
async function onSubmitVerification({
|
|
998
|
+
async function onSubmitVerification({ flow }, config, {
|
|
695
999
|
setFlowContainer,
|
|
696
1000
|
body,
|
|
697
1001
|
onRedirect
|
|
698
1002
|
}) {
|
|
699
|
-
|
|
700
|
-
if (!config.sdk.url) {
|
|
701
|
-
throw new Error(
|
|
702
|
-
`Please supply your Ory Network SDK URL to the Ory Elements configuration.`
|
|
703
|
-
);
|
|
704
|
-
}
|
|
705
|
-
await frontendClient(config.sdk.url, (_a = config.sdk.options) != null ? _a : {}).updateVerificationFlowRaw({
|
|
1003
|
+
await config.sdk.frontend.updateVerificationFlowRaw({
|
|
706
1004
|
flow: flow.id,
|
|
707
1005
|
updateVerificationFlowBody: body
|
|
708
1006
|
}).then(
|
|
709
1007
|
async (res) => setFlowContainer({
|
|
710
1008
|
flow: await res.value(),
|
|
711
|
-
flowType: FlowType.Verification
|
|
712
|
-
config
|
|
1009
|
+
flowType: FlowType.Verification
|
|
713
1010
|
})
|
|
714
1011
|
).catch(
|
|
715
1012
|
handleFlowError({
|
|
@@ -717,17 +1014,17 @@ async function onSubmitVerification({ config, flow }, {
|
|
|
717
1014
|
if (useFlowId) {
|
|
718
1015
|
replaceWindowFlowId(useFlowId);
|
|
719
1016
|
} else {
|
|
720
|
-
onRedirect(verificationUrl(config), true);
|
|
1017
|
+
onRedirect(verificationUrl$1(config), true);
|
|
721
1018
|
}
|
|
722
1019
|
},
|
|
723
1020
|
onValidationError: (body2) => {
|
|
724
1021
|
setFlowContainer({
|
|
725
1022
|
flow: body2,
|
|
726
|
-
flowType: FlowType.Verification
|
|
727
|
-
config
|
|
1023
|
+
flowType: FlowType.Verification
|
|
728
1024
|
});
|
|
729
1025
|
},
|
|
730
|
-
onRedirect
|
|
1026
|
+
onRedirect,
|
|
1027
|
+
config
|
|
731
1028
|
})
|
|
732
1029
|
);
|
|
733
1030
|
}
|
|
@@ -737,6 +1034,7 @@ var supportsSelectAccountPrompt = ["google", "github"];
|
|
|
737
1034
|
function useOryFormSubmit(onAfterSubmit) {
|
|
738
1035
|
const flowContainer = useOryFlow();
|
|
739
1036
|
const methods = useFormContext();
|
|
1037
|
+
const config = useOryConfiguration();
|
|
740
1038
|
const handleSuccess = (flow) => {
|
|
741
1039
|
flowContainer.setFlowContainer(flow);
|
|
742
1040
|
methods.reset(computeDefaultValues(flow.flow.ui.nodes));
|
|
@@ -753,7 +1051,7 @@ function useOryFormSubmit(onAfterSubmit) {
|
|
|
753
1051
|
if (submitData.method === "code" && data.code) {
|
|
754
1052
|
submitData.resend = "";
|
|
755
1053
|
}
|
|
756
|
-
await onSubmitLogin(flowContainer, {
|
|
1054
|
+
await onSubmitLogin(flowContainer, config, {
|
|
757
1055
|
onRedirect,
|
|
758
1056
|
setFlowContainer: handleSuccess,
|
|
759
1057
|
body: submitData
|
|
@@ -767,7 +1065,7 @@ function useOryFormSubmit(onAfterSubmit) {
|
|
|
767
1065
|
if (submitData.method === "code" && submitData.code) {
|
|
768
1066
|
submitData.resend = "";
|
|
769
1067
|
}
|
|
770
|
-
await onSubmitRegistration(flowContainer, {
|
|
1068
|
+
await onSubmitRegistration(flowContainer, config, {
|
|
771
1069
|
onRedirect,
|
|
772
1070
|
setFlowContainer: handleSuccess,
|
|
773
1071
|
body: submitData
|
|
@@ -775,7 +1073,7 @@ function useOryFormSubmit(onAfterSubmit) {
|
|
|
775
1073
|
break;
|
|
776
1074
|
}
|
|
777
1075
|
case FlowType.Verification:
|
|
778
|
-
await onSubmitVerification(flowContainer, {
|
|
1076
|
+
await onSubmitVerification(flowContainer, config, {
|
|
779
1077
|
onRedirect,
|
|
780
1078
|
setFlowContainer: handleSuccess,
|
|
781
1079
|
body: data
|
|
@@ -788,7 +1086,7 @@ function useOryFormSubmit(onAfterSubmit) {
|
|
|
788
1086
|
if (data.code) {
|
|
789
1087
|
submitData.email = "";
|
|
790
1088
|
}
|
|
791
|
-
await onSubmitRecovery(flowContainer, {
|
|
1089
|
+
await onSubmitRecovery(flowContainer, config, {
|
|
792
1090
|
onRedirect,
|
|
793
1091
|
setFlowContainer: handleSuccess,
|
|
794
1092
|
body: submitData
|
|
@@ -816,13 +1114,26 @@ function useOryFormSubmit(onAfterSubmit) {
|
|
|
816
1114
|
if ("passkey_remove" in submitData) {
|
|
817
1115
|
submitData.method = "passkey";
|
|
818
1116
|
}
|
|
819
|
-
await onSubmitSettings(flowContainer, {
|
|
1117
|
+
await onSubmitSettings(flowContainer, config, {
|
|
820
1118
|
onRedirect,
|
|
821
1119
|
setFlowContainer: handleSuccess,
|
|
822
1120
|
body: submitData
|
|
823
1121
|
});
|
|
824
1122
|
break;
|
|
825
1123
|
}
|
|
1124
|
+
case FlowType.OAuth2Consent: {
|
|
1125
|
+
const response = await fetch(flowContainer.flow.ui.action, {
|
|
1126
|
+
method: "POST",
|
|
1127
|
+
body: JSON.stringify(data),
|
|
1128
|
+
headers: {
|
|
1129
|
+
"Content-Type": "application/json"
|
|
1130
|
+
}
|
|
1131
|
+
});
|
|
1132
|
+
const oauth2Success = await response.json();
|
|
1133
|
+
if (oauth2Success.redirect_to && typeof oauth2Success.redirect_to === "string") {
|
|
1134
|
+
onRedirect(oauth2Success.redirect_to);
|
|
1135
|
+
}
|
|
1136
|
+
}
|
|
826
1137
|
}
|
|
827
1138
|
if ("password" in data) {
|
|
828
1139
|
methods.setValue("password", "");
|
|
@@ -837,7 +1148,11 @@ function useOryFormSubmit(onAfterSubmit) {
|
|
|
837
1148
|
};
|
|
838
1149
|
return onSubmit;
|
|
839
1150
|
}
|
|
840
|
-
function OryForm({
|
|
1151
|
+
function OryForm({
|
|
1152
|
+
children,
|
|
1153
|
+
onAfterSubmit,
|
|
1154
|
+
"data-testid": dataTestId
|
|
1155
|
+
}) {
|
|
841
1156
|
const { Form } = useComponents();
|
|
842
1157
|
const flowContainer = useOryFlow();
|
|
843
1158
|
const methods = useFormContext();
|
|
@@ -846,6 +1161,9 @@ function OryForm({ children, onAfterSubmit }) {
|
|
|
846
1161
|
const onSubmit = useOryFormSubmit(onAfterSubmit);
|
|
847
1162
|
const hasMethods = flowContainer.flow.ui.nodes.some((node) => {
|
|
848
1163
|
if (isUiNodeInputAttributes(node.attributes)) {
|
|
1164
|
+
if (node.attributes.type === "hidden") {
|
|
1165
|
+
return false;
|
|
1166
|
+
}
|
|
849
1167
|
return node.attributes.name !== "csrf_token";
|
|
850
1168
|
} else if (isUiNodeAnchorAttributes(node.attributes)) {
|
|
851
1169
|
return true;
|
|
@@ -865,17 +1183,15 @@ function OryForm({ children, onAfterSubmit }) {
|
|
|
865
1183
|
}),
|
|
866
1184
|
type: "error"
|
|
867
1185
|
};
|
|
868
|
-
return /* @__PURE__ */
|
|
869
|
-
/* @__PURE__ */ jsx(Message.Root, { children: /* @__PURE__ */ jsx(Message.Content, { message: m }, m.id) }),
|
|
870
|
-
/* @__PURE__ */ jsx(OryCardFooter, {})
|
|
871
|
-
] });
|
|
1186
|
+
return /* @__PURE__ */ jsx("div", { "data-testid": dataTestId, children: /* @__PURE__ */ jsx(Message.Root, { children: /* @__PURE__ */ jsx(Message.Content, { message: m }, m.id) }) });
|
|
872
1187
|
}
|
|
873
|
-
if (flowContainer.flowType === FlowType.Login && flowContainer.formState.current === "method_active" && flowContainer.formState.method === "code") {
|
|
1188
|
+
if ((flowContainer.flowType === FlowType.Login || flowContainer.flowType === FlowType.Registration) && flowContainer.formState.current === "method_active" && flowContainer.formState.method === "code") {
|
|
874
1189
|
methods.setValue("method", "code");
|
|
875
1190
|
}
|
|
876
1191
|
return /* @__PURE__ */ jsx(
|
|
877
1192
|
Form.Root,
|
|
878
1193
|
{
|
|
1194
|
+
"data-testid": dataTestId,
|
|
879
1195
|
action: flowContainer.flow.ui.action,
|
|
880
1196
|
method: flowContainer.flow.ui.method,
|
|
881
1197
|
onSubmit: (e) => void methods.handleSubmit(onSubmit)(e),
|
|
@@ -910,7 +1226,7 @@ var NodeInput = ({
|
|
|
910
1226
|
}) => {
|
|
911
1227
|
var _a;
|
|
912
1228
|
const { Node: Node2 } = useComponents();
|
|
913
|
-
const { setValue } = useFormContext();
|
|
1229
|
+
const { setValue, watch } = useFormContext();
|
|
914
1230
|
const {
|
|
915
1231
|
onloadTrigger,
|
|
916
1232
|
onclickTrigger,
|
|
@@ -923,7 +1239,7 @@ var NodeInput = ({
|
|
|
923
1239
|
const isResendNode = ((_a = node.meta.label) == null ? void 0 : _a.id) === 1070008;
|
|
924
1240
|
const isScreenSelectionNode = "name" in node.attributes && node.attributes.name === "screen";
|
|
925
1241
|
const setFormValue = () => {
|
|
926
|
-
if (attrs.value && !(isResendNode || isScreenSelectionNode)) {
|
|
1242
|
+
if (attrs.value && !(isResendNode || isScreenSelectionNode || node.group === UiNodeGroupEnum.Oauth2Consent)) {
|
|
927
1243
|
setValue(attrs.name, attrs.value);
|
|
928
1244
|
}
|
|
929
1245
|
};
|
|
@@ -948,6 +1264,19 @@ var NodeInput = ({
|
|
|
948
1264
|
};
|
|
949
1265
|
const isSocial = (attrs.name === "provider" || attrs.name === "link") && (node.group === UiNodeGroupEnum.Oidc || node.group === UiNodeGroupEnum.Saml);
|
|
950
1266
|
const isPinCodeInput = attrs.name === "code" && node.group === "code" || attrs.name === "totp_code" && node.group === "totp";
|
|
1267
|
+
const handleScopeChange = (checked) => {
|
|
1268
|
+
const scopes = watch("grant_scope");
|
|
1269
|
+
if (Array.isArray(scopes)) {
|
|
1270
|
+
if (checked) {
|
|
1271
|
+
setValue("grant_scope", Array.from(/* @__PURE__ */ new Set([...scopes, attrs.value])));
|
|
1272
|
+
} else {
|
|
1273
|
+
setValue(
|
|
1274
|
+
"grant_scope",
|
|
1275
|
+
scopes.filter((scope) => scope !== attrs.value)
|
|
1276
|
+
);
|
|
1277
|
+
}
|
|
1278
|
+
}
|
|
1279
|
+
};
|
|
951
1280
|
switch (attributes.type) {
|
|
952
1281
|
case UiNodeInputAttributesTypeEnum.Submit:
|
|
953
1282
|
case UiNodeInputAttributesTypeEnum.Button:
|
|
@@ -957,6 +1286,9 @@ var NodeInput = ({
|
|
|
957
1286
|
if (isResendNode || isScreenSelectionNode) {
|
|
958
1287
|
return null;
|
|
959
1288
|
}
|
|
1289
|
+
if (node.group === "oauth2_consent") {
|
|
1290
|
+
return null;
|
|
1291
|
+
}
|
|
960
1292
|
return /* @__PURE__ */ jsx(
|
|
961
1293
|
Node2.Label,
|
|
962
1294
|
{
|
|
@@ -968,6 +1300,21 @@ var NodeInput = ({
|
|
|
968
1300
|
case UiNodeInputAttributesTypeEnum.DatetimeLocal:
|
|
969
1301
|
throw new Error("Not implemented");
|
|
970
1302
|
case UiNodeInputAttributesTypeEnum.Checkbox:
|
|
1303
|
+
if (node.group === "oauth2_consent" && node.attributes.node_type === "input") {
|
|
1304
|
+
switch (node.attributes.name) {
|
|
1305
|
+
case "grant_scope":
|
|
1306
|
+
return /* @__PURE__ */ jsx(
|
|
1307
|
+
Node2.ConsentScopeCheckbox,
|
|
1308
|
+
{
|
|
1309
|
+
attributes: attrs,
|
|
1310
|
+
node,
|
|
1311
|
+
onCheckedChange: handleScopeChange
|
|
1312
|
+
}
|
|
1313
|
+
);
|
|
1314
|
+
default:
|
|
1315
|
+
return null;
|
|
1316
|
+
}
|
|
1317
|
+
}
|
|
971
1318
|
return /* @__PURE__ */ jsx(
|
|
972
1319
|
Node2.Label,
|
|
973
1320
|
{
|
|
@@ -1036,47 +1383,132 @@ function OryFormOidcButtons() {
|
|
|
1036
1383
|
if (filteredNodes.length === 0) {
|
|
1037
1384
|
return null;
|
|
1038
1385
|
}
|
|
1039
|
-
return /* @__PURE__ */ jsx(Form.OidcRoot, { nodes: filteredNodes, children: filteredNodes.map((node
|
|
1040
|
-
Node2.OidcButton,
|
|
1041
|
-
{
|
|
1042
|
-
node,
|
|
1043
|
-
attributes: node.attributes,
|
|
1044
|
-
onClick: () => {
|
|
1045
|
-
setValue(
|
|
1046
|
-
"provider",
|
|
1047
|
-
node.attributes.value
|
|
1048
|
-
);
|
|
1049
|
-
setValue("method", node.group);
|
|
1386
|
+
return /* @__PURE__ */ jsx(Form.OidcRoot, { nodes: filteredNodes, children: filteredNodes.map((node) => /* @__PURE__ */ jsx(
|
|
1387
|
+
Node2.OidcButton,
|
|
1388
|
+
{
|
|
1389
|
+
node,
|
|
1390
|
+
attributes: node.attributes,
|
|
1391
|
+
onClick: () => {
|
|
1392
|
+
setValue(
|
|
1393
|
+
"provider",
|
|
1394
|
+
node.attributes.value
|
|
1395
|
+
);
|
|
1396
|
+
setValue("method", node.group);
|
|
1397
|
+
}
|
|
1398
|
+
},
|
|
1399
|
+
getNodeId(node)
|
|
1400
|
+
)) });
|
|
1401
|
+
}
|
|
1402
|
+
function OryFormSocialButtonsForm() {
|
|
1403
|
+
const {
|
|
1404
|
+
flow: { ui }
|
|
1405
|
+
} = useOryFlow();
|
|
1406
|
+
const filteredNodes = ui.nodes.filter(
|
|
1407
|
+
(node) => node.group === UiNodeGroupEnum.Saml || node.group === UiNodeGroupEnum.Oidc
|
|
1408
|
+
);
|
|
1409
|
+
if (filteredNodes.length === 0) {
|
|
1410
|
+
return null;
|
|
1411
|
+
}
|
|
1412
|
+
return /* @__PURE__ */ jsx(OryFormProvider, { children: /* @__PURE__ */ jsx(OryForm, { "data-testid": `ory/form/methods/oidc-saml`, children: /* @__PURE__ */ jsx(OryFormOidcButtons, {}) }) });
|
|
1413
|
+
}
|
|
1414
|
+
function OryTwoStepCardStateMethodActive({
|
|
1415
|
+
formState
|
|
1416
|
+
}) {
|
|
1417
|
+
const { Form } = useComponents();
|
|
1418
|
+
const { flow, flowType, dispatchFormState } = useOryFlow();
|
|
1419
|
+
const { ui } = flow;
|
|
1420
|
+
const nodeSorter = useNodeSorter();
|
|
1421
|
+
const sortNodes = (a, b) => nodeSorter(a, b, { flowType });
|
|
1422
|
+
const groupsToShow = useNodeGroupsWithVisibleNodes(ui.nodes);
|
|
1423
|
+
const finalNodes = getFinalNodes(groupsToShow, formState.method);
|
|
1424
|
+
const selectedMethodIsSocial = formState.method === UiNodeGroupEnum.Oidc || formState.method === UiNodeGroupEnum.Saml;
|
|
1425
|
+
return /* @__PURE__ */ jsxs(OryCard, { children: [
|
|
1426
|
+
/* @__PURE__ */ jsx(OryCardHeader, {}),
|
|
1427
|
+
/* @__PURE__ */ jsxs(OryCardContent, { children: [
|
|
1428
|
+
/* @__PURE__ */ jsx(OryCardValidationMessages, {}),
|
|
1429
|
+
selectedMethodIsSocial && /* @__PURE__ */ jsx(OryFormSocialButtonsForm, {}),
|
|
1430
|
+
/* @__PURE__ */ jsx(
|
|
1431
|
+
OryForm,
|
|
1432
|
+
{
|
|
1433
|
+
"data-testid": `ory/form/methods/local`,
|
|
1434
|
+
onAfterSubmit: handleAfterFormSubmit(dispatchFormState),
|
|
1435
|
+
children: /* @__PURE__ */ jsxs(Form.Group, { children: [
|
|
1436
|
+
ui.nodes.filter(
|
|
1437
|
+
(n) => isUiNodeScriptAttributes(n.attributes) || n.group === UiNodeGroupEnum.Default || n.group === UiNodeGroupEnum.Profile
|
|
1438
|
+
).map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k)),
|
|
1439
|
+
finalNodes.sort(sortNodes).map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k))
|
|
1440
|
+
] })
|
|
1441
|
+
}
|
|
1442
|
+
)
|
|
1443
|
+
] }),
|
|
1444
|
+
/* @__PURE__ */ jsx(OryCardFooter, {})
|
|
1445
|
+
] });
|
|
1446
|
+
}
|
|
1447
|
+
function OryTwoStepCardStateProvideIdentifier() {
|
|
1448
|
+
const { Form, Card } = useComponents();
|
|
1449
|
+
const { flowType, flow, dispatchFormState } = useOryFlow();
|
|
1450
|
+
const nodeSorter = useNodeSorter();
|
|
1451
|
+
const sortNodes = (a, b) => nodeSorter(a, b, { flowType });
|
|
1452
|
+
const nonSsoNodes = withoutSingleSignOnNodes(flow.ui.nodes).sort(sortNodes);
|
|
1453
|
+
const hasSso = flow.ui.nodes.filter(isNodeVisible).some(
|
|
1454
|
+
(node) => node.group === UiNodeGroupEnum.Oidc || node.group === UiNodeGroupEnum.Saml
|
|
1455
|
+
);
|
|
1456
|
+
const showSsoDivider = hasSso && nonSsoNodes.some(isNodeVisible);
|
|
1457
|
+
return /* @__PURE__ */ jsxs(OryCard, { children: [
|
|
1458
|
+
/* @__PURE__ */ jsx(OryCardHeader, {}),
|
|
1459
|
+
/* @__PURE__ */ jsxs(OryCardContent, { children: [
|
|
1460
|
+
/* @__PURE__ */ jsx(OryCardValidationMessages, {}),
|
|
1461
|
+
/* @__PURE__ */ jsx(OryFormSocialButtonsForm, {}),
|
|
1462
|
+
/* @__PURE__ */ jsx(
|
|
1463
|
+
OryForm,
|
|
1464
|
+
{
|
|
1465
|
+
"data-testid": `ory/form/methods/local`,
|
|
1466
|
+
onAfterSubmit: handleAfterFormSubmit(dispatchFormState),
|
|
1467
|
+
children: /* @__PURE__ */ jsxs(Form.Group, { children: [
|
|
1468
|
+
showSsoDivider && /* @__PURE__ */ jsx(Card.Divider, {}),
|
|
1469
|
+
nonSsoNodes.map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k))
|
|
1470
|
+
] })
|
|
1471
|
+
}
|
|
1472
|
+
)
|
|
1473
|
+
] }),
|
|
1474
|
+
/* @__PURE__ */ jsx(OryCardFooter, {})
|
|
1475
|
+
] });
|
|
1476
|
+
}
|
|
1477
|
+
function AuthMethodList({
|
|
1478
|
+
options,
|
|
1479
|
+
setSelectedGroup
|
|
1480
|
+
}) {
|
|
1481
|
+
const { Card } = useComponents();
|
|
1482
|
+
const { setValue, getValues } = useFormContext();
|
|
1483
|
+
if (Object.entries(options).length === 0) {
|
|
1484
|
+
return null;
|
|
1485
|
+
}
|
|
1486
|
+
const handleClick = (group, options2) => {
|
|
1487
|
+
var _a, _b, _c, _d;
|
|
1488
|
+
if (isGroupImmediateSubmit(group)) {
|
|
1489
|
+
if (group === "code" && !getValues("identifier") && ((_b = (_a = options2 == null ? void 0 : options2.title) == null ? void 0 : _a.values) == null ? void 0 : _b.address)) {
|
|
1490
|
+
setValue("identifier", (_d = (_c = options2 == null ? void 0 : options2.title) == null ? void 0 : _c.values) == null ? void 0 : _d.address);
|
|
1050
1491
|
}
|
|
1492
|
+
setValue("method", group);
|
|
1493
|
+
} else {
|
|
1494
|
+
setSelectedGroup(group);
|
|
1495
|
+
}
|
|
1496
|
+
};
|
|
1497
|
+
return /* @__PURE__ */ jsx(Card.AuthMethodListContainer, { children: Object.entries(options).map(([group, options2]) => /* @__PURE__ */ jsx(
|
|
1498
|
+
Card.AuthMethodListItem,
|
|
1499
|
+
{
|
|
1500
|
+
group,
|
|
1501
|
+
title: options2.title,
|
|
1502
|
+
onClick: () => handleClick(group, options2)
|
|
1051
1503
|
},
|
|
1052
|
-
|
|
1504
|
+
group
|
|
1053
1505
|
)) });
|
|
1054
1506
|
}
|
|
1055
|
-
function
|
|
1056
|
-
|
|
1057
|
-
flow: { ui }
|
|
1058
|
-
} = useOryFlow();
|
|
1059
|
-
const filteredNodes = ui.nodes.filter((node) => node.group === UiNodeGroupEnum.Saml || node.group === UiNodeGroupEnum.Oidc);
|
|
1060
|
-
if (filteredNodes.length === 0) {
|
|
1061
|
-
return null;
|
|
1062
|
-
}
|
|
1063
|
-
return /* @__PURE__ */ jsx(OryFormProvider, { children: /* @__PURE__ */ jsx(OryForm, { children: /* @__PURE__ */ jsx(OryFormOidcButtons, {}) }) });
|
|
1064
|
-
}
|
|
1065
|
-
function isUINodeGroupEnum(method) {
|
|
1066
|
-
return Object.values(UiNodeGroupEnum).includes(method);
|
|
1067
|
-
}
|
|
1068
|
-
function OryTwoStepCard() {
|
|
1069
|
-
var _a, _b, _c, _d;
|
|
1070
|
-
const { Form, Card } = useComponents();
|
|
1071
|
-
const { flow, flowType, formState, dispatchFormState } = useOryFlow();
|
|
1072
|
-
const { ui } = flow;
|
|
1073
|
-
const nodeSorter = useNodeSorter();
|
|
1074
|
-
const sortNodes = (a, b) => nodeSorter(a, b, { flowType });
|
|
1075
|
-
const uniqueGroups = useNodesGroups(ui.nodes);
|
|
1076
|
-
const options = Object.fromEntries(
|
|
1507
|
+
function toAuthMethodPickerOptions(visibleGroups) {
|
|
1508
|
+
return Object.fromEntries(
|
|
1077
1509
|
Object.values(UiNodeGroupEnum).filter((group) => {
|
|
1078
|
-
var
|
|
1079
|
-
return (
|
|
1510
|
+
var _a;
|
|
1511
|
+
return (_a = visibleGroups[group]) == null ? void 0 : _a.length;
|
|
1080
1512
|
}).filter(
|
|
1081
1513
|
(group) => ![
|
|
1082
1514
|
UiNodeGroupEnum.Oidc,
|
|
@@ -1088,7 +1520,19 @@ function OryTwoStepCard() {
|
|
|
1088
1520
|
].includes(group)
|
|
1089
1521
|
).map((g) => [g, {}])
|
|
1090
1522
|
);
|
|
1091
|
-
|
|
1523
|
+
}
|
|
1524
|
+
function OryTwoStepCardStateSelectMethod() {
|
|
1525
|
+
var _a, _b, _c, _d;
|
|
1526
|
+
const { Form, Card, Message } = useComponents();
|
|
1527
|
+
const { flow, flowType, dispatchFormState } = useOryFlow();
|
|
1528
|
+
const { ui } = flow;
|
|
1529
|
+
const intl = useIntl();
|
|
1530
|
+
const nodeSorter = useNodeSorter();
|
|
1531
|
+
const sortNodes = (a, b) => nodeSorter(a, b, { flowType });
|
|
1532
|
+
const visibleGroups = useNodeGroupsWithVisibleNodes(ui.nodes);
|
|
1533
|
+
const authMethodBlocks = toAuthMethodPickerOptions(visibleGroups);
|
|
1534
|
+
const authMethodAdditionalNodes = useFunctionalNodes(ui.nodes);
|
|
1535
|
+
if (UiNodeGroupEnum.Code in authMethodBlocks) {
|
|
1092
1536
|
let identifier = (_b = (_a = findNode(ui.nodes, {
|
|
1093
1537
|
group: "identifier_first",
|
|
1094
1538
|
node_type: "input",
|
|
@@ -1100,7 +1544,7 @@ function OryTwoStepCard() {
|
|
|
1100
1544
|
name: "address"
|
|
1101
1545
|
})) == null ? void 0 : _c.attributes) == null ? void 0 : _d.value);
|
|
1102
1546
|
if (identifier) {
|
|
1103
|
-
|
|
1547
|
+
authMethodBlocks[UiNodeGroupEnum.Code] = {
|
|
1104
1548
|
title: {
|
|
1105
1549
|
id: "identities.messages.1010023",
|
|
1106
1550
|
values: { address: identifier }
|
|
@@ -1108,89 +1552,58 @@ function OryTwoStepCard() {
|
|
|
1108
1552
|
};
|
|
1109
1553
|
}
|
|
1110
1554
|
}
|
|
1111
|
-
const
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
}
|
|
1117
|
-
|
|
1118
|
-
dispatchFormState({
|
|
1119
|
-
type: "action_select_method",
|
|
1120
|
-
method
|
|
1121
|
-
});
|
|
1122
|
-
}
|
|
1555
|
+
const noMethods = {
|
|
1556
|
+
id: 5000002,
|
|
1557
|
+
text: intl.formatMessage({
|
|
1558
|
+
id: `identities.messages.5000002`,
|
|
1559
|
+
defaultMessage: "No authentication methods are available for this request. Please contact the site or app owner."
|
|
1560
|
+
}),
|
|
1561
|
+
type: "error"
|
|
1123
1562
|
};
|
|
1124
|
-
const hasSso = ui.nodes.some(
|
|
1125
|
-
(node) => node.group === UiNodeGroupEnum.Oidc || node.group === UiNodeGroupEnum.Saml
|
|
1126
|
-
);
|
|
1127
|
-
const showSso = !(formState.current === "method_active" && !(formState.method === UiNodeGroupEnum.Oidc || formState.method === UiNodeGroupEnum.Saml));
|
|
1128
|
-
const showSsoDivider = hasSso && nonSsoNodes.filter((n) => {
|
|
1129
|
-
if (isUiNodeInputAttributes(n.attributes)) {
|
|
1130
|
-
return n.attributes.type !== UiNodeInputAttributesTypeEnum.Hidden;
|
|
1131
|
-
} else if (isUiNodeScriptAttributes(n.attributes)) {
|
|
1132
|
-
return false;
|
|
1133
|
-
}
|
|
1134
|
-
return true;
|
|
1135
|
-
}).length > 0;
|
|
1136
1563
|
return /* @__PURE__ */ jsxs(OryCard, { children: [
|
|
1137
1564
|
/* @__PURE__ */ jsx(OryCardHeader, {}),
|
|
1138
1565
|
/* @__PURE__ */ jsxs(OryCardContent, { children: [
|
|
1139
1566
|
/* @__PURE__ */ jsx(OryCardValidationMessages, {}),
|
|
1140
|
-
|
|
1141
|
-
/* @__PURE__ */
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
formState.current === "select_method" && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1567
|
+
/* @__PURE__ */ jsx(OryFormSocialButtonsForm, {}),
|
|
1568
|
+
Object.entries(authMethodBlocks).length > 0 ? /* @__PURE__ */ jsx(
|
|
1569
|
+
OryForm,
|
|
1570
|
+
{
|
|
1571
|
+
"data-testid": `ory/form/methods/local`,
|
|
1572
|
+
onAfterSubmit: handleAfterFormSubmit(dispatchFormState),
|
|
1573
|
+
children: /* @__PURE__ */ jsxs(Form.Group, { children: [
|
|
1148
1574
|
/* @__PURE__ */ jsx(Card.Divider, {}),
|
|
1149
1575
|
/* @__PURE__ */ jsx(
|
|
1150
1576
|
AuthMethodList,
|
|
1151
1577
|
{
|
|
1152
|
-
options,
|
|
1578
|
+
options: authMethodBlocks,
|
|
1153
1579
|
setSelectedGroup: (group) => dispatchFormState({
|
|
1154
1580
|
type: "action_select_method",
|
|
1155
1581
|
method: group
|
|
1156
1582
|
})
|
|
1157
1583
|
}
|
|
1158
1584
|
),
|
|
1159
|
-
|
|
1160
|
-
] }),
|
|
1161
|
-
formState.current === "method_active" && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1162
|
-
ui.nodes.filter((n) => n.type === "script").map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k)),
|
|
1163
|
-
finalNodes.sort(sortNodes).map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k))
|
|
1585
|
+
authMethodAdditionalNodes.sort(sortNodes).map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k))
|
|
1164
1586
|
] })
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1587
|
+
}
|
|
1588
|
+
) : !hasSingleSignOnNodes(ui.nodes) && /* @__PURE__ */ jsx("div", { "data-testid": `ory/form/methods/local`, children: /* @__PURE__ */ jsx(Message.Root, { children: /* @__PURE__ */ jsx(Message.Content, { message: noMethods }, noMethods.id) }) })
|
|
1589
|
+
] }),
|
|
1590
|
+
/* @__PURE__ */ jsx(OryCardFooter, {})
|
|
1169
1591
|
] });
|
|
1170
1592
|
}
|
|
1171
|
-
function
|
|
1172
|
-
const {
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
}
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
};
|
|
1185
|
-
return /* @__PURE__ */ jsx(Card.AuthMethodListContainer, { children: Object.entries(options).map(([group, options2]) => /* @__PURE__ */ jsx(
|
|
1186
|
-
Card.AuthMethodListItem,
|
|
1187
|
-
{
|
|
1188
|
-
group,
|
|
1189
|
-
title: options2.title,
|
|
1190
|
-
onClick: () => handleClick(group, options2)
|
|
1191
|
-
},
|
|
1192
|
-
group
|
|
1193
|
-
)) });
|
|
1593
|
+
function OryTwoStepCard() {
|
|
1594
|
+
const { formState } = useOryFlow();
|
|
1595
|
+
switch (formState.current) {
|
|
1596
|
+
case "provide_identifier":
|
|
1597
|
+
return /* @__PURE__ */ jsx(OryTwoStepCardStateProvideIdentifier, {});
|
|
1598
|
+
case "select_method":
|
|
1599
|
+
return /* @__PURE__ */ jsx(OryTwoStepCardStateSelectMethod, {});
|
|
1600
|
+
case "method_active":
|
|
1601
|
+
return /* @__PURE__ */ jsx(OryTwoStepCardStateMethodActive, { formState });
|
|
1602
|
+
}
|
|
1603
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1604
|
+
"unknown form state: ",
|
|
1605
|
+
formState.current
|
|
1606
|
+
] });
|
|
1194
1607
|
}
|
|
1195
1608
|
function OryFormGroups({ groups }) {
|
|
1196
1609
|
const {
|
|
@@ -1200,8 +1613,8 @@ function OryFormGroups({ groups }) {
|
|
|
1200
1613
|
const { flowType } = useOryFlow();
|
|
1201
1614
|
const { Form } = useComponents();
|
|
1202
1615
|
const nodes = ui.nodes.filter((node) => groups.indexOf(node.group) > -1).sort((a, b) => nodeSorter(a, b, { flowType }));
|
|
1203
|
-
return /* @__PURE__ */ jsx(Form.Group, { children: nodes.map((node
|
|
1204
|
-
return /* @__PURE__ */ jsx(Node, { node },
|
|
1616
|
+
return /* @__PURE__ */ jsx(Form.Group, { children: nodes.map((node) => {
|
|
1617
|
+
return /* @__PURE__ */ jsx(Node, { node }, getNodeId(node));
|
|
1205
1618
|
}) });
|
|
1206
1619
|
}
|
|
1207
1620
|
function OryFormSection({
|
|
@@ -1230,6 +1643,19 @@ function OryFormSectionInner({
|
|
|
1230
1643
|
}
|
|
1231
1644
|
);
|
|
1232
1645
|
}
|
|
1646
|
+
function OryConsentCard() {
|
|
1647
|
+
const { Form, Card } = useComponents();
|
|
1648
|
+
const flow = useOryFlow();
|
|
1649
|
+
return /* @__PURE__ */ jsxs(OryCard, { children: [
|
|
1650
|
+
/* @__PURE__ */ jsx(OryCardHeader, {}),
|
|
1651
|
+
/* @__PURE__ */ jsx(OryCardContent, { children: /* @__PURE__ */ jsxs(OryForm, { children: [
|
|
1652
|
+
/* @__PURE__ */ jsx(Card.Divider, {}),
|
|
1653
|
+
/* @__PURE__ */ jsx(Form.Group, { children: flow.flow.ui.nodes.map((node) => /* @__PURE__ */ jsx(Node, { node }, getNodeId(node))) }),
|
|
1654
|
+
/* @__PURE__ */ jsx(Card.Divider, {}),
|
|
1655
|
+
/* @__PURE__ */ jsx(OryCardFooter, {})
|
|
1656
|
+
] }) })
|
|
1657
|
+
] });
|
|
1658
|
+
}
|
|
1233
1659
|
function OryFormGroupDivider() {
|
|
1234
1660
|
const { Card } = useComponents();
|
|
1235
1661
|
const {
|
|
@@ -1583,16 +2009,19 @@ function SettingsSectionContent({ group, nodes }) {
|
|
|
1583
2009
|
const { Card } = useComponents();
|
|
1584
2010
|
const intl = useIntl();
|
|
1585
2011
|
const { flow } = useOryFlow();
|
|
1586
|
-
const
|
|
2012
|
+
const groupedNodes = useNodesGroups(flow.ui.nodes, {
|
|
2013
|
+
// Script nodes are already handled by the parent component.
|
|
2014
|
+
omit: ["script"]
|
|
2015
|
+
});
|
|
1587
2016
|
if (group === UiNodeGroupEnum.Totp) {
|
|
1588
2017
|
return /* @__PURE__ */ jsxs(
|
|
1589
2018
|
OryFormSection,
|
|
1590
2019
|
{
|
|
1591
|
-
nodes:
|
|
2020
|
+
nodes: groupedNodes.groups.totp,
|
|
1592
2021
|
"data-testid": "ory/screen/settings/group/totp",
|
|
1593
2022
|
children: [
|
|
1594
|
-
/* @__PURE__ */ jsx(OrySettingsTotp, { nodes: (_a =
|
|
1595
|
-
(_b =
|
|
2023
|
+
/* @__PURE__ */ jsx(OrySettingsTotp, { nodes: (_a = groupedNodes.groups.totp) != null ? _a : [] }),
|
|
2024
|
+
(_b = groupedNodes.groups.default) == null ? void 0 : _b.map((node) => /* @__PURE__ */ jsx(Node, { node }, getNodeId(node)))
|
|
1596
2025
|
]
|
|
1597
2026
|
}
|
|
1598
2027
|
);
|
|
@@ -1601,16 +2030,16 @@ function SettingsSectionContent({ group, nodes }) {
|
|
|
1601
2030
|
return /* @__PURE__ */ jsxs(
|
|
1602
2031
|
OryFormSection,
|
|
1603
2032
|
{
|
|
1604
|
-
nodes:
|
|
2033
|
+
nodes: groupedNodes.groups.lookup_secret,
|
|
1605
2034
|
"data-testid": "ory/screen/settings/group/lookup_secret",
|
|
1606
2035
|
children: [
|
|
1607
2036
|
/* @__PURE__ */ jsx(
|
|
1608
2037
|
OrySettingsRecoveryCodes,
|
|
1609
2038
|
{
|
|
1610
|
-
nodes: (_c =
|
|
2039
|
+
nodes: (_c = groupedNodes.groups.lookup_secret) != null ? _c : []
|
|
1611
2040
|
}
|
|
1612
2041
|
),
|
|
1613
|
-
(_d =
|
|
2042
|
+
(_d = groupedNodes.groups.default) == null ? void 0 : _d.map((node) => /* @__PURE__ */ jsx(Node, { node }, getNodeId(node)))
|
|
1614
2043
|
]
|
|
1615
2044
|
}
|
|
1616
2045
|
);
|
|
@@ -1619,11 +2048,11 @@ function SettingsSectionContent({ group, nodes }) {
|
|
|
1619
2048
|
return /* @__PURE__ */ jsxs(
|
|
1620
2049
|
OryFormSection,
|
|
1621
2050
|
{
|
|
1622
|
-
nodes:
|
|
2051
|
+
nodes: groupedNodes.groups.oidc,
|
|
1623
2052
|
"data-testid": "ory/screen/settings/group/oidc",
|
|
1624
2053
|
children: [
|
|
1625
|
-
/* @__PURE__ */ jsx(OrySettingsOidc, { nodes: (_e =
|
|
1626
|
-
(_f =
|
|
2054
|
+
/* @__PURE__ */ jsx(OrySettingsOidc, { nodes: (_e = groupedNodes.groups.oidc) != null ? _e : [] }),
|
|
2055
|
+
(_f = groupedNodes.groups.default) == null ? void 0 : _f.map((node) => /* @__PURE__ */ jsx(Node, { node }, getNodeId(node)))
|
|
1627
2056
|
]
|
|
1628
2057
|
}
|
|
1629
2058
|
);
|
|
@@ -1632,11 +2061,11 @@ function SettingsSectionContent({ group, nodes }) {
|
|
|
1632
2061
|
return /* @__PURE__ */ jsxs(
|
|
1633
2062
|
OryFormSection,
|
|
1634
2063
|
{
|
|
1635
|
-
nodes:
|
|
2064
|
+
nodes: groupedNodes.groups.webauthn,
|
|
1636
2065
|
"data-testid": "ory/screen/settings/group/webauthn",
|
|
1637
2066
|
children: [
|
|
1638
|
-
/* @__PURE__ */ jsx(OrySettingsWebauthn, { nodes: (_g =
|
|
1639
|
-
(_h =
|
|
2067
|
+
/* @__PURE__ */ jsx(OrySettingsWebauthn, { nodes: (_g = groupedNodes.groups.webauthn) != null ? _g : [] }),
|
|
2068
|
+
(_h = groupedNodes.groups.default) == null ? void 0 : _h.map((node) => /* @__PURE__ */ jsx(Node, { node }, getNodeId(node)))
|
|
1640
2069
|
]
|
|
1641
2070
|
}
|
|
1642
2071
|
);
|
|
@@ -1645,11 +2074,11 @@ function SettingsSectionContent({ group, nodes }) {
|
|
|
1645
2074
|
return /* @__PURE__ */ jsxs(
|
|
1646
2075
|
OryFormSection,
|
|
1647
2076
|
{
|
|
1648
|
-
nodes:
|
|
2077
|
+
nodes: groupedNodes.groups.passkey,
|
|
1649
2078
|
"data-testid": "ory/screen/settings/group/passkey",
|
|
1650
2079
|
children: [
|
|
1651
|
-
/* @__PURE__ */ jsx(OrySettingsPasskey, { nodes: (_i =
|
|
1652
|
-
(_j =
|
|
2080
|
+
/* @__PURE__ */ jsx(OrySettingsPasskey, { nodes: (_i = groupedNodes.groups.passkey) != null ? _i : [] }),
|
|
2081
|
+
(_j = groupedNodes.groups.default) == null ? void 0 : _j.map((node) => /* @__PURE__ */ jsx(Node, { node }, getNodeId(node)))
|
|
1653
2082
|
]
|
|
1654
2083
|
}
|
|
1655
2084
|
);
|
|
@@ -1670,30 +2099,30 @@ function SettingsSectionContent({ group, nodes }) {
|
|
|
1670
2099
|
id: `settings.${group}.description`
|
|
1671
2100
|
}),
|
|
1672
2101
|
children: [
|
|
1673
|
-
(_k =
|
|
2102
|
+
(_k = groupedNodes.groups.default) == null ? void 0 : _k.map((node) => /* @__PURE__ */ jsx(Node, { node }, getNodeId(node))),
|
|
1674
2103
|
nodes.filter(
|
|
1675
2104
|
(node) => "type" in node.attributes && node.attributes.type !== "submit"
|
|
1676
|
-
).map((node
|
|
2105
|
+
).map((node) => /* @__PURE__ */ jsx(Node, { node }, getNodeId(node)))
|
|
1677
2106
|
]
|
|
1678
2107
|
}
|
|
1679
2108
|
),
|
|
1680
2109
|
/* @__PURE__ */ jsx(Card.SettingsSectionFooter, { children: nodes.filter(
|
|
1681
2110
|
(node) => "type" in node.attributes && node.attributes.type === "submit"
|
|
1682
|
-
).map((node
|
|
2111
|
+
).map((node) => /* @__PURE__ */ jsx(Node, { node }, getNodeId(node))) })
|
|
1683
2112
|
]
|
|
1684
2113
|
}
|
|
1685
2114
|
);
|
|
1686
2115
|
}
|
|
1687
|
-
var
|
|
1688
|
-
(node) =>
|
|
2116
|
+
var onlyScriptNodes = (nodes) => nodes.filter(
|
|
2117
|
+
(node) => isUiNodeScriptAttributes(node.attributes) && node.attributes.id === "webauthn_script"
|
|
1689
2118
|
);
|
|
1690
2119
|
function OrySettingsCard() {
|
|
1691
2120
|
const { flow } = useOryFlow();
|
|
1692
|
-
const uniqueGroups = useNodesGroups(flow.ui.nodes);
|
|
1693
|
-
const
|
|
2121
|
+
const uniqueGroups = useNodesGroups(flow.ui.nodes, { omit: ["script"] });
|
|
2122
|
+
const scriptNodes = onlyScriptNodes(flow.ui.nodes);
|
|
1694
2123
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1695
2124
|
/* @__PURE__ */ jsx(OryCardValidationMessages, {}),
|
|
1696
|
-
|
|
2125
|
+
scriptNodes.map((n) => /* @__PURE__ */ jsx(Node, { node: n }, getNodeId(n))),
|
|
1697
2126
|
uniqueGroups.entries.map(([group, nodes]) => {
|
|
1698
2127
|
if (group === UiNodeGroupEnum.Default) {
|
|
1699
2128
|
return null;
|
|
@@ -2000,9 +2429,11 @@ var en_default = {
|
|
|
2000
2429
|
"card.header.parts.oidc": "a social provider",
|
|
2001
2430
|
"card.header.parts.password.registration": "your {identifierLabel} and a password",
|
|
2002
2431
|
"card.header.parts.password.login": "your {identifierLabel} and password",
|
|
2003
|
-
"card.header.parts.code": "a code sent to
|
|
2432
|
+
"card.header.parts.code": "a code sent to you",
|
|
2004
2433
|
"card.header.parts.passkey": "a Passkey",
|
|
2005
2434
|
"card.header.parts.webauthn": "a security key",
|
|
2435
|
+
"card.header.parts.totp": "your authenticator app",
|
|
2436
|
+
"card.header.parts.lookup_secret": "a backup recovery code",
|
|
2006
2437
|
"card.header.parts.identifier-first": "your {identifierLabel}",
|
|
2007
2438
|
"card.header.description.login": "Sign in with {identifierLabel}",
|
|
2008
2439
|
"card.header.description.registration": "Sign up with {identifierLabel}",
|
|
@@ -2029,6 +2460,20 @@ var en_default = {
|
|
|
2029
2460
|
"property.username": "username",
|
|
2030
2461
|
"property.identifier": "identifier",
|
|
2031
2462
|
"property.code": "code",
|
|
2463
|
+
"consent.title": "Authorize {party}",
|
|
2464
|
+
"consent.subtitle": "A third party application wants to access information associated with your account {identifier}.",
|
|
2465
|
+
"consent.scope.openid.title": "Identity",
|
|
2466
|
+
"consent.scope.openid.description": "Allows the application to verify your identity. This is required for authentication and a trusted login experience.",
|
|
2467
|
+
"consent.scope.offline_access.title": "Offline Access",
|
|
2468
|
+
"consent.scope.offline_access.description": "Allows this application to keep you signed in even when you're not actively using it.",
|
|
2469
|
+
"consent.scope.profile.title": "Profile Information",
|
|
2470
|
+
"consent.scope.profile.description": "Allows access to your basic profile details, including your username, first name, and last name.",
|
|
2471
|
+
"consent.scope.email.title": "Email Address",
|
|
2472
|
+
"consent.scope.email.description": "Retrieve your email address and its verification status.",
|
|
2473
|
+
"consent.scope.address.title": "Physical Address",
|
|
2474
|
+
"consent.scope.address.description": "Access your postal address.",
|
|
2475
|
+
"consent.scope.phone.title": "Phone Number",
|
|
2476
|
+
"consent.scope.phone.description": "Retrieve your phone number and its verification status.",
|
|
2032
2477
|
"error.title.what-happened": "What happened?",
|
|
2033
2478
|
"error.title.what-can-i-do": "What can I do?",
|
|
2034
2479
|
"error.instructions": "Please try again in a few minutes or contact the website operator.",
|
|
@@ -2205,7 +2650,7 @@ var de_default = {
|
|
|
2205
2650
|
"two-step.code.description": "Ein Best\xE4tigungscode wird an Ihre E-Mail gesendet.",
|
|
2206
2651
|
"two-step.code.title": "E-Mail-Code",
|
|
2207
2652
|
"two-step.passkey.description": "Verwenden Sie die Fingerabdruck- oder Gesichtserkennung Ihres Ger\xE4ts",
|
|
2208
|
-
"two-step.passkey.title": "
|
|
2653
|
+
"two-step.passkey.title": "Passkey (empfohlen)",
|
|
2209
2654
|
"two-step.password.description": "Geben Sie Ihr Passwort ein, das mit Ihrem Konto verkn\xFCpft ist",
|
|
2210
2655
|
"two-step.password.title": "Passwort",
|
|
2211
2656
|
"two-step.webauthn.title": "Sicherheitsschl\xFCssel",
|
|
@@ -2221,28 +2666,30 @@ var de_default = {
|
|
|
2221
2666
|
"login.cancel-label": "Nicht das richtige Konto?",
|
|
2222
2667
|
"identities.messages.1010023": "Code an {address} senden",
|
|
2223
2668
|
"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.",
|
|
2224
|
-
"identities.messages.1010017": "",
|
|
2225
|
-
"identities.messages.1010018": "",
|
|
2226
|
-
"identities.messages.1010019": "",
|
|
2669
|
+
"identities.messages.1010017": "Anmelden und verbinden",
|
|
2670
|
+
"identities.messages.1010018": "Mit {provider} best\xE4tigen",
|
|
2671
|
+
"identities.messages.1010019": "Code senden um fortzufahren",
|
|
2227
2672
|
"identities.messages.1010020": "",
|
|
2228
|
-
"identities.messages.1010021": "",
|
|
2229
|
-
"identities.messages.1010022": "",
|
|
2230
|
-
"identities.messages.1040007": "",
|
|
2231
|
-
"identities.messages.1040008": "",
|
|
2232
|
-
"identities.messages.1040009": "",
|
|
2673
|
+
"identities.messages.1010021": "Mit Paskey anmelden",
|
|
2674
|
+
"identities.messages.1010022": "Mit Passwort anmelden",
|
|
2675
|
+
"identities.messages.1040007": "Mit Passkey registrieren",
|
|
2676
|
+
"identities.messages.1040008": "Zur\xFCck",
|
|
2677
|
+
"identities.messages.1040009": "Bitte w\xE4hlen Sie eine Authentifizierungsmethode, um fortzufahren.",
|
|
2233
2678
|
"identities.messages.1050019": "Passkey hinzuf\xFCgen",
|
|
2234
|
-
"identities.messages.1050020": "",
|
|
2235
|
-
"identities.messages.4000037": "",
|
|
2236
|
-
"identities.messages.4010009": "",
|
|
2237
|
-
"identities.messages.4010010": "",
|
|
2679
|
+
"identities.messages.1050020": 'Passkey "{display_name}" entfernen',
|
|
2680
|
+
"identities.messages.4000037": "F\xFCr die eingegebenen Daten existiert kein Account",
|
|
2681
|
+
"identities.messages.4010009": "Die Authentifizierungsmethode stimmt nicht mit der vorherigen Authentifizierungsmethode \xFCberein. Bitte versuchen Sie es erneut.",
|
|
2682
|
+
"identities.messages.4010010": "Die eingegebene Adresse stimmt nicht mit der Adresse \xFCberein, die Sie bei der Registrierung angegeben haben. Bitte versuchen Sie es erneut.",
|
|
2238
2683
|
"input.placeholder": "{placeholder} eingeben",
|
|
2239
|
-
"card.header.parts.code": "
|
|
2684
|
+
"card.header.parts.code": "ein an Sie gesendeter Code",
|
|
2240
2685
|
"card.header.parts.identifier-first": "Ihr {identifierLabel}",
|
|
2241
2686
|
"card.header.parts.oidc": "ein sozialer Anbieter",
|
|
2242
2687
|
"card.header.parts.passkey": "ein Passkey",
|
|
2243
2688
|
"card.header.parts.password.login": "Ihrer {identifierLabel} und Ihrem Passwort",
|
|
2244
2689
|
"card.header.parts.password.registration": "Ihrer {identifierLabel} und einem Passwort",
|
|
2245
2690
|
"card.header.parts.webauthn": "ein Sicherheitsschl\xFCssel",
|
|
2691
|
+
"card.header.parts.totp": "deine Authentifikator-App",
|
|
2692
|
+
"card.header.parts.lookup_secret": "ein Backup-Wiederherstellungscode",
|
|
2246
2693
|
"recovery.subtitle": "Geben Sie die mit Ihrem Konto verkn\xFCpfte E-Mail-Adresse ein, um einen einmaligen Zugangscode zu erhalten",
|
|
2247
2694
|
"verification.subtitle": "Geben Sie die mit Ihrem Konto verkn\xFCpfte E-Mail-Adresse ein, um es zu best\xE4tigen",
|
|
2248
2695
|
"card.header.description.login": "Melden Sie sich mit {identifierLabel} an",
|
|
@@ -2300,6 +2747,20 @@ var de_default = {
|
|
|
2300
2747
|
"property.phone": "Telefon",
|
|
2301
2748
|
"property.code": "Code",
|
|
2302
2749
|
"property.username": "Benutzername",
|
|
2750
|
+
"consent.title": "Autorisieren {party}",
|
|
2751
|
+
"consent.subtitle": "Eine Drittanbieteranwendung m\xF6chte auf Informationen zugreifen, die mit Ihrem Konto {identifier} verkn\xFCpft sind.",
|
|
2752
|
+
"consent.scope.openid.title": "Identit\xE4t",
|
|
2753
|
+
"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.",
|
|
2754
|
+
"consent.scope.offline_access.title": "Offline-Zugriff",
|
|
2755
|
+
"consent.scope.offline_access.description": "Erm\xF6glicht dieser Anwendung, Sie angemeldet zu lassen, auch wenn Sie sie nicht aktiv nutzen.",
|
|
2756
|
+
"consent.scope.profile.title": "Profilinformationen",
|
|
2757
|
+
"consent.scope.profile.description": "Erm\xF6glicht den Zugriff auf Ihre grundlegenden Profildetails, einschlie\xDFlich Ihres Benutzernamens, Vornamens und Nachnamens.",
|
|
2758
|
+
"consent.scope.email.title": "E-Mail-Adresse",
|
|
2759
|
+
"consent.scope.email.description": "Erm\xF6glicht den Abruf Ihrer E-Mail-Adresse und deren \xDCberpr\xFCfungsstatus.",
|
|
2760
|
+
"consent.scope.address.title": "Physische Adresse",
|
|
2761
|
+
"consent.scope.address.description": "Erm\xF6glicht den Zugriff auf Ihre Postanschrift.",
|
|
2762
|
+
"consent.scope.phone.title": "Telefonnummer",
|
|
2763
|
+
"consent.scope.phone.description": "Erm\xF6glicht den Abruf Ihrer Telefonnummer und deren \xDCberpr\xFCfungsstatus.",
|
|
2303
2764
|
"error.title.what-happened": "Was ist passiert?",
|
|
2304
2765
|
"error.footer.copy": "Kopieren",
|
|
2305
2766
|
"error.footer.text": "Bitte f\xFCgen Sie bei der Meldung dieses Fehlers die folgenden Informationen hinzu:",
|
|
@@ -2321,7 +2782,6 @@ var es_default = {
|
|
|
2321
2782
|
"error.back-button": "Regresar",
|
|
2322
2783
|
"error.description": "Ocurri\xF3 un error con el siguiente mensaje:",
|
|
2323
2784
|
"error.support-email-link": "Si el problema persiste, por favor contacte a <a>{contactSupportEmail}</a>",
|
|
2324
|
-
"error.title": "",
|
|
2325
2785
|
"error.title-internal-server-error": "Error Interno del Servidor",
|
|
2326
2786
|
"error.title-not-found": "404 - P\xE1gina no encontrada",
|
|
2327
2787
|
"identities.messages.1010001": "Iniciar sesi\xF3n",
|
|
@@ -2496,45 +2956,6 @@ var es_default = {
|
|
|
2496
2956
|
"two-step.totp.description": "Utilice un c\xF3digo de un solo uso de 6 d\xEDgitos de su aplicaci\xF3n de autenticaci\xF3n",
|
|
2497
2957
|
"two-step.lookup_secret.title": "C\xF3digo de recuperaci\xF3n de respaldo",
|
|
2498
2958
|
"two-step.lookup_secret.description": "Utilice uno de sus c\xF3digos de respaldo de 8 d\xEDgitos para autenticarse",
|
|
2499
|
-
"identities.messages.1010016": "",
|
|
2500
|
-
"identities.messages.1010017": "",
|
|
2501
|
-
"identities.messages.1010018": "",
|
|
2502
|
-
"identities.messages.1010019": "",
|
|
2503
|
-
"identities.messages.1010020": "",
|
|
2504
|
-
"identities.messages.1010021": "",
|
|
2505
|
-
"identities.messages.1010022": "",
|
|
2506
|
-
"identities.messages.1010023": "",
|
|
2507
|
-
"identities.messages.1040007": "",
|
|
2508
|
-
"identities.messages.1040008": "",
|
|
2509
|
-
"identities.messages.1040009": "",
|
|
2510
|
-
"identities.messages.1050019": "",
|
|
2511
|
-
"identities.messages.1050020": "",
|
|
2512
|
-
"identities.messages.1070014": "",
|
|
2513
|
-
"identities.messages.1070015": "",
|
|
2514
|
-
"identities.messages.4000037": "",
|
|
2515
|
-
"identities.messages.4000038": "",
|
|
2516
|
-
"identities.messages.4010009": "",
|
|
2517
|
-
"identities.messages.4010010": "",
|
|
2518
|
-
"login.cancel-button": "",
|
|
2519
|
-
"login.cancel-label": "",
|
|
2520
|
-
"input.placeholder": "",
|
|
2521
|
-
"card.header.description.login": "",
|
|
2522
|
-
"card.header.description.registration": "",
|
|
2523
|
-
"card.header.parts.code": "",
|
|
2524
|
-
"card.header.parts.identifier-first": "",
|
|
2525
|
-
"card.header.parts.oidc": "",
|
|
2526
|
-
"card.header.parts.passkey": "",
|
|
2527
|
-
"card.header.parts.password.login": "",
|
|
2528
|
-
"card.header.parts.password.registration": "",
|
|
2529
|
-
"card.header.parts.webauthn": "",
|
|
2530
|
-
"forms.label.forgot-password": "",
|
|
2531
|
-
"login.subtitle": "",
|
|
2532
|
-
"login.subtitle-refresh": "",
|
|
2533
|
-
"misc.or": "",
|
|
2534
|
-
"recovery.subtitle": "",
|
|
2535
|
-
"registration.subtitle": "",
|
|
2536
|
-
"settings.subtitle": "",
|
|
2537
|
-
"verification.subtitle": "",
|
|
2538
2959
|
"settings.totp.info.linked": "Actualmente tienes una aplicaci\xF3n de autenticaci\xF3n conectada.",
|
|
2539
2960
|
"settings.totp.info.not-linked": "Para habilitar, escanea el c\xF3digo QR con tu autenticador e ingresa el c\xF3digo.",
|
|
2540
2961
|
"settings.totp.title": "Aplicaci\xF3n Autenticadora",
|
|
@@ -2552,31 +2973,87 @@ var es_default = {
|
|
|
2552
2973
|
"settings.profile.title": "Configuraci\xF3n de Perfil",
|
|
2553
2974
|
"settings.webauthn.description": "Administra la configuraci\xF3n de tu token de hardware",
|
|
2554
2975
|
"settings.webauthn.title": "Gestionar Tokens de Hardware",
|
|
2555
|
-
"
|
|
2556
|
-
"
|
|
2557
|
-
"
|
|
2558
|
-
"
|
|
2559
|
-
"
|
|
2560
|
-
"
|
|
2561
|
-
"
|
|
2562
|
-
"
|
|
2563
|
-
"
|
|
2564
|
-
"
|
|
2565
|
-
"
|
|
2566
|
-
"
|
|
2567
|
-
"
|
|
2568
|
-
"
|
|
2569
|
-
"
|
|
2570
|
-
"
|
|
2571
|
-
"
|
|
2572
|
-
"
|
|
2573
|
-
"
|
|
2574
|
-
"
|
|
2575
|
-
"
|
|
2576
|
-
"
|
|
2577
|
-
"
|
|
2578
|
-
"
|
|
2579
|
-
"
|
|
2976
|
+
"consent.title": "Autorizar {party}",
|
|
2977
|
+
"consent.subtitle": "Una aplicaci\xF3n de terceros quiere acceder a la informaci\xF3n asociada a su cuenta {identifier}.",
|
|
2978
|
+
"consent.scope.openid.title": "Identidad",
|
|
2979
|
+
"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.",
|
|
2980
|
+
"consent.scope.offline_access.title": "Acceso sin conexi\xF3n",
|
|
2981
|
+
"consent.scope.offline_access.description": "Permite que esta aplicaci\xF3n le mantenga conectado incluso cuando no la est\xE9 utilizando activamente.",
|
|
2982
|
+
"consent.scope.profile.title": "Informaci\xF3n del perfil",
|
|
2983
|
+
"consent.scope.profile.description": "Permite el acceso a los detalles b\xE1sicos de su perfil, incluyendo su nombre de usuario, nombre y apellido.",
|
|
2984
|
+
"consent.scope.email.title": "Direcci\xF3n de correo electr\xF3nico",
|
|
2985
|
+
"consent.scope.email.description": "Recupere su direcci\xF3n de correo electr\xF3nico y su estado de verificaci\xF3n.",
|
|
2986
|
+
"consent.scope.address.title": "Direcci\xF3n f\xEDsica",
|
|
2987
|
+
"consent.scope.address.description": "Acceda a su direcci\xF3n postal.",
|
|
2988
|
+
"consent.scope.phone.title": "N\xFAmero de tel\xE9fono",
|
|
2989
|
+
"consent.scope.phone.description": "Recupere su n\xFAmero de tel\xE9fono y su estado de verificaci\xF3n.",
|
|
2990
|
+
"error.title": "Ocurri\xF3 un error",
|
|
2991
|
+
"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.',
|
|
2992
|
+
"identities.messages.1010017": "Iniciar sesi\xF3n y vincular",
|
|
2993
|
+
"identities.messages.1010018": "Confirmar con {provider}",
|
|
2994
|
+
"identities.messages.1010019": "Solicitar c\xF3digo para continuar",
|
|
2995
|
+
"identities.messages.1010021": "Iniciar sesi\xF3n con clave de acceso",
|
|
2996
|
+
"identities.messages.1010022": "Iniciar sesi\xF3n con contrase\xF1a",
|
|
2997
|
+
"identities.messages.1010023": "Enviar c\xF3digo a {address}",
|
|
2998
|
+
"identities.messages.1040007": "Registrarse con clave de acceso",
|
|
2999
|
+
"identities.messages.1040008": "Atr\xE1s",
|
|
3000
|
+
"identities.messages.1040009": "Por favor, elige una credencial para autenticarte.",
|
|
3001
|
+
"identities.messages.1050019": "Agregar clave de acceso",
|
|
3002
|
+
"identities.messages.1070014": "Iniciar sesi\xF3n y vincular credencial",
|
|
3003
|
+
"identities.messages.1070015": "Por favor, completa el desaf\xEDo captcha para continuar.",
|
|
3004
|
+
"identities.messages.4000037": "Esta cuenta no existe o no tiene ning\xFAn m\xE9todo de inicio de sesi\xF3n configurado.",
|
|
3005
|
+
"identities.messages.4000038": "Fall\xF3 la verificaci\xF3n de Captcha, por favor intenta de nuevo.",
|
|
3006
|
+
"identities.messages.4010009": "Las credenciales vinculadas no coinciden.",
|
|
3007
|
+
"identities.messages.4010010": "La direcci\xF3n que ingresaste no coincide con ninguna direcci\xF3n conocida en la cuenta actual.",
|
|
3008
|
+
"login.cancel-button": "Cancelar",
|
|
3009
|
+
"login.cancel-label": "\xBFNo es la cuenta correcta?",
|
|
3010
|
+
"login.subtitle": "Iniciar sesi\xF3n con {parts}",
|
|
3011
|
+
"login.subtitle-refresh": "Confirma tu identidad con {parts}",
|
|
3012
|
+
"recovery.subtitle": "Ingresa la direcci\xF3n de correo electr\xF3nico asociada con tu cuenta para recibir un c\xF3digo de acceso \xFAnico",
|
|
3013
|
+
"registration.subtitle": "Registrarse con {parts}",
|
|
3014
|
+
"settings.subtitle": "Actualiza la configuraci\xF3n de tu cuenta",
|
|
3015
|
+
"settings.title-lookup-secret": "Administrar c\xF3digos de recuperaci\xF3n de respaldo 2FA",
|
|
3016
|
+
"settings.title-navigation": "Configuraci\xF3n de la cuenta",
|
|
3017
|
+
"settings.title-oidc": "Inicio de sesi\xF3n social",
|
|
3018
|
+
"settings.title-password": "Cambiar contrase\xF1a",
|
|
3019
|
+
"settings.title-profile": "Configuraci\xF3n del perfil",
|
|
3020
|
+
"settings.title-totp": "Administrar la aplicaci\xF3n de autenticaci\xF3n 2FA TOTP",
|
|
3021
|
+
"settings.title-webauthn": "Administrar tokens de hardware",
|
|
3022
|
+
"settings.title-passkey": "Administrar claves de acceso",
|
|
3023
|
+
"verification.subtitle": "Ingresa la direcci\xF3n de correo electr\xF3nico asociada con tu cuenta para verificarla",
|
|
3024
|
+
"input.placeholder": "Ingresa tu {placeholder}",
|
|
3025
|
+
"card.header.parts.oidc": "un proveedor social",
|
|
3026
|
+
"card.header.parts.password.registration": "tu {identifierLabel} y una contrase\xF1a",
|
|
3027
|
+
"card.header.parts.password.login": "tu {identifierLabel} y contrase\xF1a",
|
|
3028
|
+
"card.header.parts.code": "un c\xF3digo enviado a tu correo electr\xF3nico",
|
|
3029
|
+
"card.header.parts.passkey": "una clave de acceso",
|
|
3030
|
+
"card.header.parts.webauthn": "una clave de seguridad",
|
|
3031
|
+
"card.header.parts.totp": "su aplicaci\xF3n de autenticaci\xF3n",
|
|
3032
|
+
"card.header.parts.lookup_secret": "un c\xF3digo de recuperaci\xF3n de copia de seguridad",
|
|
3033
|
+
"card.header.parts.identifier-first": "tu {identifierLabel}",
|
|
3034
|
+
"card.header.description.login": "Iniciar sesi\xF3n con {identifierLabel}",
|
|
3035
|
+
"card.header.description.registration": "Registrarse con {identifierLabel}",
|
|
3036
|
+
"misc.or": "o",
|
|
3037
|
+
"forms.label.forgot-password": "\xBFOlvidaste tu contrase\xF1a?",
|
|
3038
|
+
"settings.oidc.info": "Las cuentas conectadas de estos proveedores se pueden utilizar para iniciar sesi\xF3n en tu cuenta",
|
|
3039
|
+
"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",
|
|
3040
|
+
"settings.passkey.info": "Administra la configuraci\xF3n de tus claves de acceso",
|
|
3041
|
+
"card.footer.select-another-method": "Seleccionar otro m\xE9todo",
|
|
3042
|
+
"account-linking.title": "Vincular cuenta",
|
|
3043
|
+
"property.password": "contrase\xF1a",
|
|
3044
|
+
"property.email": "correo electr\xF3nico",
|
|
3045
|
+
"property.phone": "tel\xE9fono",
|
|
3046
|
+
"property.username": "nombre de usuario",
|
|
3047
|
+
"property.identifier": "identificador",
|
|
3048
|
+
"property.code": "c\xF3digo",
|
|
3049
|
+
"error.title.what-happened": "\xBFQu\xE9 pas\xF3?",
|
|
3050
|
+
"error.title.what-can-i-do": "\xBFQu\xE9 puedo hacer?",
|
|
3051
|
+
"error.instructions": "Por favor, int\xE9ntalo de nuevo en unos minutos o contacta al operador del sitio web.",
|
|
3052
|
+
"error.footer.text": "Al informar este error, incluye la siguiente informaci\xF3n:",
|
|
3053
|
+
"error.footer.copy": "Copiar",
|
|
3054
|
+
"error.action.go-back": "Regresar",
|
|
3055
|
+
"identities.messages.1010020": "",
|
|
3056
|
+
"identities.messages.1050020": 'Eliminar passkey "{display_name}"'
|
|
2580
3057
|
};
|
|
2581
3058
|
|
|
2582
3059
|
// src/locales/fr.json
|
|
@@ -2767,87 +3244,103 @@ var fr_default = {
|
|
|
2767
3244
|
"two-step.totp.description": "Utilisez un code \xE0 usage unique \xE0 6 chiffres provenant de votre application d'authentification",
|
|
2768
3245
|
"two-step.lookup_secret.title": "Code de r\xE9cup\xE9ration de secours",
|
|
2769
3246
|
"two-step.lookup_secret.description": "Utilisez l'un de vos codes de secours \xE0 8 chiffres pour vous authentifier",
|
|
2770
|
-
"identities.messages.1010023": "",
|
|
2771
|
-
"identities.messages.1070015": "",
|
|
2772
|
-
"identities.messages.4000038": "",
|
|
2773
|
-
"login.cancel-button": "",
|
|
2774
|
-
"login.cancel-label": "",
|
|
2775
|
-
"identities.messages.1010016": "",
|
|
2776
|
-
"identities.messages.1010017": "",
|
|
2777
|
-
"identities.messages.1010018": "",
|
|
2778
|
-
"identities.messages.1010019": "",
|
|
2779
|
-
"identities.messages.1010020": "",
|
|
2780
|
-
"identities.messages.1010021": "",
|
|
2781
|
-
"identities.messages.1010022": "",
|
|
2782
|
-
"identities.messages.1040007": "",
|
|
2783
|
-
"identities.messages.1040008": "",
|
|
2784
|
-
"identities.messages.1040009": "",
|
|
2785
|
-
"identities.messages.1050019": "",
|
|
2786
|
-
"identities.messages.1050020": "",
|
|
2787
|
-
"identities.messages.1070014": "",
|
|
2788
|
-
"identities.messages.4000037": "",
|
|
2789
|
-
"identities.messages.4010009": "",
|
|
2790
|
-
"identities.messages.4010010": "",
|
|
2791
|
-
"input.placeholder": "",
|
|
2792
|
-
"card.header.description.login": "",
|
|
2793
|
-
"card.header.description.registration": "",
|
|
2794
|
-
"card.header.parts.code": "",
|
|
2795
|
-
"card.header.parts.identifier-first": "",
|
|
2796
|
-
"card.header.parts.oidc": "",
|
|
2797
|
-
"card.header.parts.passkey": "",
|
|
2798
|
-
"card.header.parts.password.login": "",
|
|
2799
|
-
"card.header.parts.password.registration": "",
|
|
2800
|
-
"card.header.parts.webauthn": "",
|
|
2801
|
-
"forms.label.forgot-password": "",
|
|
2802
|
-
"login.subtitle": "",
|
|
2803
|
-
"login.subtitle-refresh": "",
|
|
2804
|
-
"misc.or": "",
|
|
2805
|
-
"recovery.subtitle": "",
|
|
2806
|
-
"registration.subtitle": "",
|
|
2807
|
-
"settings.subtitle": "",
|
|
2808
|
-
"verification.subtitle": "",
|
|
2809
3247
|
"settings.totp.info.linked": "Vous avez actuellement une application d'authentification connect\xE9e.",
|
|
2810
3248
|
"settings.totp.info.not-linked": "Pour activer, scannez le QR code avec votre authentificateur et entrez le code.",
|
|
2811
3249
|
"settings.totp.title": "Application d'authentification",
|
|
2812
3250
|
"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.",
|
|
2813
|
-
"
|
|
2814
|
-
"
|
|
2815
|
-
"
|
|
2816
|
-
"
|
|
2817
|
-
"
|
|
2818
|
-
"
|
|
2819
|
-
"
|
|
2820
|
-
"
|
|
2821
|
-
"
|
|
2822
|
-
"
|
|
2823
|
-
"
|
|
2824
|
-
"
|
|
2825
|
-
"
|
|
2826
|
-
"
|
|
2827
|
-
"
|
|
2828
|
-
"
|
|
2829
|
-
"
|
|
2830
|
-
"
|
|
2831
|
-
"
|
|
2832
|
-
"
|
|
2833
|
-
"
|
|
2834
|
-
"
|
|
2835
|
-
"
|
|
2836
|
-
"
|
|
2837
|
-
"
|
|
2838
|
-
"
|
|
2839
|
-
"
|
|
2840
|
-
"
|
|
2841
|
-
"
|
|
2842
|
-
"
|
|
2843
|
-
"
|
|
2844
|
-
"
|
|
2845
|
-
"
|
|
2846
|
-
"
|
|
2847
|
-
"
|
|
2848
|
-
"
|
|
2849
|
-
"
|
|
2850
|
-
"
|
|
3251
|
+
"consent.title": "Autoriser {party}",
|
|
3252
|
+
"consent.subtitle": "Une application tierce souhaite acc\xE9der aux informations associ\xE9es \xE0 votre compte {identifier}.",
|
|
3253
|
+
"consent.scope.openid.title": "Identit\xE9",
|
|
3254
|
+
"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.",
|
|
3255
|
+
"consent.scope.offline_access.title": "Acc\xE8s hors ligne",
|
|
3256
|
+
"consent.scope.offline_access.description": "Permet \xE0 cette application de vous maintenir connect\xE9 m\xEAme lorsque vous ne l'utilisez pas activement.",
|
|
3257
|
+
"consent.scope.profile.title": "Informations de profil",
|
|
3258
|
+
"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.",
|
|
3259
|
+
"consent.scope.email.title": "Adresse e-mail",
|
|
3260
|
+
"consent.scope.email.description": "R\xE9cup\xE8re votre adresse e-mail et son statut de v\xE9rification.",
|
|
3261
|
+
"consent.scope.address.title": "Adresse physique",
|
|
3262
|
+
"consent.scope.address.description": "Acc\xE8de \xE0 votre adresse postale.",
|
|
3263
|
+
"consent.scope.phone.title": "Num\xE9ro de t\xE9l\xE9phone",
|
|
3264
|
+
"consent.scope.phone.description": "R\xE9cup\xE8re votre num\xE9ro de t\xE9l\xE9phone et son statut de v\xE9rification.",
|
|
3265
|
+
"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.",
|
|
3266
|
+
"identities.messages.1010017": "Se connecter et lier",
|
|
3267
|
+
"identities.messages.1010018": "Confirmer avec {provider}",
|
|
3268
|
+
"identities.messages.1010019": "Demander un code pour continuer",
|
|
3269
|
+
"identities.messages.1010021": "Se connecter avec une cl\xE9 d'acc\xE8s",
|
|
3270
|
+
"identities.messages.1010022": "Se connecter avec un mot de passe",
|
|
3271
|
+
"identities.messages.1010023": "Envoyer le code \xE0 {address}",
|
|
3272
|
+
"identities.messages.1040007": "S'inscrire avec une cl\xE9 d'acc\xE8s",
|
|
3273
|
+
"identities.messages.1040008": "Retour",
|
|
3274
|
+
"identities.messages.1040009": "Veuillez choisir une identification pour vous authentifier.",
|
|
3275
|
+
"identities.messages.1050019": "Ajouter une cl\xE9 d'acc\xE8s",
|
|
3276
|
+
"identities.messages.1050020": "Supprimer la cl\xE9 d'acc\xE8s \xAB {display_name} \xBB",
|
|
3277
|
+
"identities.messages.1070014": "Se connecter et lier l'identification",
|
|
3278
|
+
"identities.messages.1070015": "Veuillez compl\xE9ter le d\xE9fi captcha pour continuer.",
|
|
3279
|
+
"identities.messages.4000037": "Ce compte n'existe pas ou n'a aucune m\xE9thode de connexion configur\xE9e.",
|
|
3280
|
+
"identities.messages.4000038": "La v\xE9rification Captcha a \xE9chou\xE9, veuillez r\xE9essayer.",
|
|
3281
|
+
"identities.messages.4010009": "Les identifications li\xE9es ne correspondent pas.",
|
|
3282
|
+
"identities.messages.4010010": "L'adresse que vous avez saisie ne correspond \xE0 aucune adresse connue dans le compte actuel.",
|
|
3283
|
+
"login.cancel-button": "Annuler",
|
|
3284
|
+
"login.cancel-label": "Ce n'est pas le bon compte\xA0?",
|
|
3285
|
+
"login.subtitle": "Se connecter avec {parts}",
|
|
3286
|
+
"login.subtitle-refresh": "Confirmez votre identit\xE9 avec {parts}",
|
|
3287
|
+
"recovery.subtitle": "Saisissez l'adresse e-mail associ\xE9e \xE0 votre compte pour recevoir un code d'acc\xE8s unique",
|
|
3288
|
+
"registration.subtitle": "S'inscrire avec {parts}",
|
|
3289
|
+
"settings.subtitle": "Mettre \xE0 jour les param\xE8tres de votre compte",
|
|
3290
|
+
"settings.title-lookup-secret": "G\xE9rer les codes de r\xE9cup\xE9ration de sauvegarde 2FA",
|
|
3291
|
+
"settings.title-navigation": "Param\xE8tres du compte",
|
|
3292
|
+
"settings.title-oidc": "Connexion via les r\xE9seaux sociaux",
|
|
3293
|
+
"settings.title-password": "Changer le mot de passe",
|
|
3294
|
+
"settings.title-profile": "Param\xE8tres du profil",
|
|
3295
|
+
"settings.title-totp": "G\xE9rer l'application d'authentification 2FA TOTP",
|
|
3296
|
+
"settings.title-webauthn": "G\xE9rer les jetons mat\xE9riels",
|
|
3297
|
+
"settings.title-passkey": "G\xE9rer les cl\xE9s d'acc\xE8s",
|
|
3298
|
+
"settings.navigation.title": "Param\xE8tres du compte",
|
|
3299
|
+
"settings.password.title": "Changer le mot de passe",
|
|
3300
|
+
"settings.password.description": "Modifier votre mot de passe",
|
|
3301
|
+
"settings.profile.title": "Param\xE8tres du profil",
|
|
3302
|
+
"settings.profile.description": "Mettre \xE0 jour les informations de votre profil",
|
|
3303
|
+
"settings.webauthn.title": "G\xE9rer les jetons mat\xE9riels",
|
|
3304
|
+
"settings.webauthn.description": "G\xE9rer les param\xE8tres de votre jeton mat\xE9riel",
|
|
3305
|
+
"verification.subtitle": "Saisissez l'adresse e-mail associ\xE9e \xE0 votre compte pour la v\xE9rifier",
|
|
3306
|
+
"input.placeholder": "Saisissez votre {placeholder}",
|
|
3307
|
+
"card.header.parts.oidc": "un fournisseur de r\xE9seaux sociaux",
|
|
3308
|
+
"card.header.parts.password.registration": "votre {identifierLabel} et un mot de passe",
|
|
3309
|
+
"card.header.parts.password.login": "votre {identifierLabel} et votre mot de passe",
|
|
3310
|
+
"card.header.parts.passkey": "une cl\xE9 d'acc\xE8s",
|
|
3311
|
+
"card.header.parts.webauthn": "une cl\xE9 de s\xE9curit\xE9",
|
|
3312
|
+
"card.header.parts.identifier-first": "votre {identifierLabel}",
|
|
3313
|
+
"card.header.parts.code": "un code qui vous a \xE9t\xE9 envoy\xE9",
|
|
3314
|
+
"card.header.parts.totp": "votre application d'authentification",
|
|
3315
|
+
"card.header.parts.lookup_secret": "un code de r\xE9cup\xE9ration de secours",
|
|
3316
|
+
"card.header.description.login": "Se connecter avec {identifierLabel}",
|
|
3317
|
+
"card.header.description.registration": "S'inscrire avec {identifierLabel}",
|
|
3318
|
+
"misc.or": "ou",
|
|
3319
|
+
"forms.label.forgot-password": "Mot de passe oubli\xE9?",
|
|
3320
|
+
"settings.lookup_secret.title": "Codes de r\xE9cup\xE9ration de sauvegarde (second facteur)",
|
|
3321
|
+
"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.",
|
|
3322
|
+
"settings.oidc.title": "Comptes connect\xE9s",
|
|
3323
|
+
"settings.oidc.description": "Connectez un fournisseur de connexion sociale \xE0 votre compte.",
|
|
3324
|
+
"settings.oidc.info": "Les comptes connect\xE9s de ces fournisseurs peuvent \xEAtre utilis\xE9s pour vous connecter \xE0 votre compte",
|
|
3325
|
+
"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",
|
|
3326
|
+
"settings.passkey.title": "G\xE9rer les cl\xE9s d'acc\xE8s",
|
|
3327
|
+
"settings.passkey.description": "G\xE9rer les param\xE8tres de vos cl\xE9s d'acc\xE8s",
|
|
3328
|
+
"settings.passkey.info": "G\xE9rer les param\xE8tres de vos cl\xE9s d'acc\xE8s",
|
|
3329
|
+
"card.footer.select-another-method": "S\xE9lectionner une autre m\xE9thode",
|
|
3330
|
+
"account-linking.title": "Lier le compte",
|
|
3331
|
+
"property.password": "mot de passe",
|
|
3332
|
+
"property.email": "e-mail",
|
|
3333
|
+
"property.phone": "t\xE9l\xE9phone",
|
|
3334
|
+
"property.username": "nom d'utilisateur",
|
|
3335
|
+
"property.identifier": "identifiant",
|
|
3336
|
+
"property.code": "code",
|
|
3337
|
+
"error.title.what-happened": "Que s'est-il pass\xE9?",
|
|
3338
|
+
"error.title.what-can-i-do": "Que puis-je faire?",
|
|
3339
|
+
"error.instructions": "Veuillez r\xE9essayer dans quelques minutes ou contacter l'op\xE9rateur du site Web.",
|
|
3340
|
+
"error.footer.text": "Lorsque vous signalez cette erreur, veuillez inclure les informations suivantes:",
|
|
3341
|
+
"error.footer.copy": "Copier",
|
|
3342
|
+
"error.action.go-back": "Retour",
|
|
3343
|
+
"identities.messages.1010020": ""
|
|
2851
3344
|
};
|
|
2852
3345
|
|
|
2853
3346
|
// src/locales/nl.json
|
|
@@ -3062,7 +3555,9 @@ var nl_default = {
|
|
|
3062
3555
|
"input.placeholder": "",
|
|
3063
3556
|
"card.header.description.login": "",
|
|
3064
3557
|
"card.header.description.registration": "",
|
|
3065
|
-
"card.header.parts.code": "",
|
|
3558
|
+
"card.header.parts.code": "een code die naar je is verzonden",
|
|
3559
|
+
"card.header.parts.totp": "je authenticator-app",
|
|
3560
|
+
"card.header.parts.lookup_secret": "een backup herstelcode",
|
|
3066
3561
|
"card.header.parts.identifier-first": "",
|
|
3067
3562
|
"card.header.parts.oidc": "",
|
|
3068
3563
|
"card.header.parts.passkey": "",
|
|
@@ -3113,6 +3608,20 @@ var nl_default = {
|
|
|
3113
3608
|
"property.password": "",
|
|
3114
3609
|
"property.phone": "",
|
|
3115
3610
|
"property.username": "",
|
|
3611
|
+
"consent.title": "Autoriseren {party}",
|
|
3612
|
+
"consent.subtitle": "Een derde partij applicatie wil toegang tot informatie die aan uw account {identifier} is gekoppeld.",
|
|
3613
|
+
"consent.scope.openid.title": "Identiteit",
|
|
3614
|
+
"consent.scope.openid.description": "Stelt de applicatie in staat uw identiteit te verifi\xEBren. Dit is vereist voor authenticatie en een betrouwbare inlogervaring.",
|
|
3615
|
+
"consent.scope.offline_access.title": "Offline toegang",
|
|
3616
|
+
"consent.scope.offline_access.description": "Stelt deze applicatie in staat u ingelogd te houden, zelfs wanneer u deze niet actief gebruikt.",
|
|
3617
|
+
"consent.scope.profile.title": "Profielinformatie",
|
|
3618
|
+
"consent.scope.profile.description": "Geeft toegang tot uw basisprofielgegevens, inclusief uw gebruikersnaam, voornaam en achternaam.",
|
|
3619
|
+
"consent.scope.email.title": "E-mailadres",
|
|
3620
|
+
"consent.scope.email.description": "Haal uw e-mailadres en de verificatiestatus ervan op.",
|
|
3621
|
+
"consent.scope.address.title": "Fysiek adres",
|
|
3622
|
+
"consent.scope.address.description": "Toegang tot uw postadres.",
|
|
3623
|
+
"consent.scope.phone.title": "Telefoonnummer",
|
|
3624
|
+
"consent.scope.phone.description": "Haal uw telefoonnummer en de verificatiestatus ervan op.",
|
|
3116
3625
|
"error.action.go-back": "",
|
|
3117
3626
|
"error.footer.copy": "",
|
|
3118
3627
|
"error.footer.text": "",
|
|
@@ -3333,13 +3842,15 @@ var pl_default = {
|
|
|
3333
3842
|
"input.placeholder": "",
|
|
3334
3843
|
"card.header.description.login": "",
|
|
3335
3844
|
"card.header.description.registration": "",
|
|
3336
|
-
"card.header.parts.code": "",
|
|
3337
3845
|
"card.header.parts.identifier-first": "",
|
|
3338
3846
|
"card.header.parts.oidc": "",
|
|
3339
3847
|
"card.header.parts.passkey": "",
|
|
3340
3848
|
"card.header.parts.password.login": "",
|
|
3341
3849
|
"card.header.parts.password.registration": "",
|
|
3342
3850
|
"card.header.parts.webauthn": "",
|
|
3851
|
+
"card.header.parts.code": "kod wys\u0142any do Ciebie",
|
|
3852
|
+
"card.header.parts.totp": "Twoja aplikacja uwierzytelniaj\u0105ca",
|
|
3853
|
+
"card.header.parts.lookup_secret": "kod odzyskiwania kopii zapasowej",
|
|
3343
3854
|
"forms.label.forgot-password": "",
|
|
3344
3855
|
"login.subtitle": "",
|
|
3345
3856
|
"login.subtitle-refresh": "",
|
|
@@ -3384,6 +3895,20 @@ var pl_default = {
|
|
|
3384
3895
|
"property.phone": "",
|
|
3385
3896
|
"property.username": "",
|
|
3386
3897
|
"property.identifier": "",
|
|
3898
|
+
"consent.title": "Autoryzuj {party}",
|
|
3899
|
+
"consent.subtitle": "Aplikacja trzeciej strony chce uzyska\u0107 dost\u0119p do informacji powi\u0105zanych z Twoim kontem {identifier}.",
|
|
3900
|
+
"consent.scope.openid.title": "To\u017Csamo\u015B\u0107",
|
|
3901
|
+
"consent.scope.openid.description": "Pozwala aplikacji zweryfikowa\u0107 Twoj\u0105 to\u017Csamo\u015B\u0107. Jest to wymagane do uwierzytelniania i zapewnienia zaufanej sesji logowania.",
|
|
3902
|
+
"consent.scope.offline_access.title": "Dost\u0119p offline",
|
|
3903
|
+
"consent.scope.offline_access.description": "Pozwala aplikacji utrzyma\u0107 Twoje logowanie, nawet gdy nie korzystasz z niej aktywnie.",
|
|
3904
|
+
"consent.scope.profile.title": "Informacje profilowe",
|
|
3905
|
+
"consent.scope.profile.description": "Pozwala na dost\u0119p do podstawowych danych profilowych, w tym nazwy u\u017Cytkownika, imienia i nazwiska.",
|
|
3906
|
+
"consent.scope.email.title": "Adres e-mail",
|
|
3907
|
+
"consent.scope.email.description": "Pobierz sw\xF3j adres e-mail oraz status jego weryfikacji.",
|
|
3908
|
+
"consent.scope.address.title": "Adres fizyczny",
|
|
3909
|
+
"consent.scope.address.description": "Dost\u0119p do Twojego adresu pocztowego.",
|
|
3910
|
+
"consent.scope.phone.title": "Numer telefonu",
|
|
3911
|
+
"consent.scope.phone.description": "Pobierz sw\xF3j numer telefonu oraz status jego weryfikacji.",
|
|
3387
3912
|
"error.action.go-back": "",
|
|
3388
3913
|
"error.footer.copy": "",
|
|
3389
3914
|
"error.footer.text": "",
|
|
@@ -3604,7 +4129,9 @@ var pt_default = {
|
|
|
3604
4129
|
"input.placeholder": "",
|
|
3605
4130
|
"card.header.description.login": "",
|
|
3606
4131
|
"card.header.description.registration": "",
|
|
3607
|
-
"card.header.parts.code": "",
|
|
4132
|
+
"card.header.parts.code": "um c\xF3digo enviado para voc\xEA",
|
|
4133
|
+
"card.header.parts.totp": "seu aplicativo autenticador",
|
|
4134
|
+
"card.header.parts.lookup_secret": "um c\xF3digo de recupera\xE7\xE3o de backup",
|
|
3608
4135
|
"card.header.parts.identifier-first": "",
|
|
3609
4136
|
"card.header.parts.oidc": "",
|
|
3610
4137
|
"card.header.parts.passkey": "",
|
|
@@ -3655,6 +4182,20 @@ var pt_default = {
|
|
|
3655
4182
|
"property.password": "",
|
|
3656
4183
|
"property.phone": "",
|
|
3657
4184
|
"property.username": "",
|
|
4185
|
+
"consent.title": "Autorizar {party}",
|
|
4186
|
+
"consent.subtitle": "Um aplicativo de terceiros deseja acessar as informa\xE7\xF5es associadas \xE0 sua conta {identifier}.",
|
|
4187
|
+
"consent.scope.openid.title": "Identidade",
|
|
4188
|
+
"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.",
|
|
4189
|
+
"consent.scope.offline_access.title": "Acesso Offline",
|
|
4190
|
+
"consent.scope.offline_access.description": "Permite que este aplicativo mantenha voc\xEA conectado mesmo quando n\xE3o estiver usando-o ativamente.",
|
|
4191
|
+
"consent.scope.profile.title": "Informa\xE7\xF5es do Perfil",
|
|
4192
|
+
"consent.scope.profile.description": "Permite o acesso aos detalhes b\xE1sicos do seu perfil, incluindo seu nome de usu\xE1rio, primeiro nome e sobrenome.",
|
|
4193
|
+
"consent.scope.email.title": "Endere\xE7o de E-mail",
|
|
4194
|
+
"consent.scope.email.description": "Recupere seu endere\xE7o de e-mail e seu status de verifica\xE7\xE3o.",
|
|
4195
|
+
"consent.scope.address.title": "Endere\xE7o F\xEDsico",
|
|
4196
|
+
"consent.scope.address.description": "Acesse seu endere\xE7o postal.",
|
|
4197
|
+
"consent.scope.phone.title": "N\xFAmero de Telefone",
|
|
4198
|
+
"consent.scope.phone.description": "Recupere seu n\xFAmero de telefone e seu status de verifica\xE7\xE3o.",
|
|
3658
4199
|
"error.action.go-back": "",
|
|
3659
4200
|
"error.footer.copy": "",
|
|
3660
4201
|
"error.footer.text": "",
|
|
@@ -3875,7 +4416,9 @@ var sv_default = {
|
|
|
3875
4416
|
"input.placeholder": "Ange din {placeholder}",
|
|
3876
4417
|
"card.header.description.login": "Logga in med {identifierLabel}",
|
|
3877
4418
|
"card.header.description.registration": "Registrera dig med {identifierLabel}",
|
|
3878
|
-
"card.header.parts.code": "en kod skickad till
|
|
4419
|
+
"card.header.parts.code": "en kod skickad till dig",
|
|
4420
|
+
"card.header.parts.totp": "din autentiseringsapp",
|
|
4421
|
+
"card.header.parts.lookup_secret": "en s\xE4kerhetskopieringskod",
|
|
3879
4422
|
"card.header.parts.identifier-first": "din {identifierLabel}",
|
|
3880
4423
|
"card.header.parts.oidc": "en social leverant\xF6r",
|
|
3881
4424
|
"card.header.parts.passkey": "en Passkey",
|
|
@@ -3926,6 +4469,20 @@ var sv_default = {
|
|
|
3926
4469
|
"property.username": "anv\xE4ndarnamn",
|
|
3927
4470
|
"property.identifier": "identifier",
|
|
3928
4471
|
"property.code": "kod",
|
|
4472
|
+
"consent.title": "Auktorisera {party}",
|
|
4473
|
+
"consent.subtitle": "En tredjepartsapplikation vill f\xE5 tillg\xE5ng till information kopplad till ditt konto {identifier}.",
|
|
4474
|
+
"consent.scope.openid.title": "Identitet",
|
|
4475
|
+
"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.",
|
|
4476
|
+
"consent.scope.offline_access.title": "Offline-\xE5tkomst",
|
|
4477
|
+
"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.",
|
|
4478
|
+
"consent.scope.profile.title": "Profilinformation",
|
|
4479
|
+
"consent.scope.profile.description": "Ger tillg\xE5ng till dina grundl\xE4ggande profiluppgifter, inklusive ditt anv\xE4ndarnamn, f\xF6rnamn och efternamn.",
|
|
4480
|
+
"consent.scope.email.title": "E-postadress",
|
|
4481
|
+
"consent.scope.email.description": "H\xE4mta din e-postadress och dess verifieringsstatus.",
|
|
4482
|
+
"consent.scope.address.title": "Fysisk adress",
|
|
4483
|
+
"consent.scope.address.description": "F\xE5 \xE5tkomst till din postadress.",
|
|
4484
|
+
"consent.scope.phone.title": "Telefonnummer",
|
|
4485
|
+
"consent.scope.phone.description": "H\xE4mta ditt telefonnummer och dess verifieringsstatus.",
|
|
3929
4486
|
"error.action.go-back": "",
|
|
3930
4487
|
"error.footer.copy": "",
|
|
3931
4488
|
"error.footer.text": "",
|
|
@@ -3946,6 +4503,6 @@ var OryLocales = {
|
|
|
3946
4503
|
sv: sv_default
|
|
3947
4504
|
};
|
|
3948
4505
|
|
|
3949
|
-
export { HeadlessPageHeader, OryCard, OryCardContent, OryCardFooter, OryCardHeader, OryCardValidationMessages, OryForm, OryFormGroupDivider, OryFormGroups, OryFormOidcButtons, OryFormSection, OryFormSocialButtonsForm, OryLocales, OryProvider, OrySettingsCard, OryTwoStepCard, messageTestId, uiTextToFormattedMessage, useComponents, useNodeSorter, useOryFlow };
|
|
4506
|
+
export { HeadlessPageHeader, OryCard, OryCardContent, OryCardFooter, OryCardHeader, OryCardValidationMessages, OryConfigurationProvider, OryConsentCard, OryForm, OryFormGroupDivider, OryFormGroups, OryFormOidcButtons, OryFormSection, OryFormSocialButtonsForm, OryLocales, OryProvider, OrySettingsCard, OryTwoStepCard, messageTestId, uiTextToFormattedMessage, useComponents, useNodeSorter, useOryConfiguration, useOryFlow };
|
|
3950
4507
|
//# sourceMappingURL=index.mjs.map
|
|
3951
4508
|
//# sourceMappingURL=index.mjs.map
|