@ory/elements-react 1.0.0-pr.5494d7c2 → 1.0.0-pr.6c5e72b6
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 +23 -0
- package/DEVELOPMENT.md +2 -1
- package/dist/index.js +219 -53
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +217 -51
- package/dist/index.mjs.map +1 -1
- package/dist/theme/default/index.css +9 -0
- package/dist/theme/default/index.css.map +1 -1
- package/dist/theme/default/index.js +623 -481
- package/dist/theme/default/index.js.map +1 -1
- package/dist/theme/default/index.mjs +432 -289
- package/dist/theme/default/index.mjs.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,26 @@
|
|
|
1
|
+
## 1.0.0-rc.5 (2025-05-16)
|
|
2
|
+
|
|
3
|
+
### 🩹 Fixes
|
|
4
|
+
|
|
5
|
+
- properly detect OIDC account linking ([#538](https://github.com/ory/elements/pull/538))
|
|
6
|
+
|
|
7
|
+
### ❤️ Thank You
|
|
8
|
+
|
|
9
|
+
- Jonas Hungershausen
|
|
10
|
+
|
|
11
|
+
## 1.0.0-rc.4 (2025-05-15)
|
|
12
|
+
|
|
13
|
+
### 🩹 Fixes
|
|
14
|
+
|
|
15
|
+
- properly handle missing fields in OIDC registration ([#534](https://github.com/ory/elements/pull/534))
|
|
16
|
+
- incorrect if branching in handle error ([#533](https://github.com/ory/elements/pull/533))
|
|
17
|
+
- re-enable method chooser on mfa method active screens ([#530](https://github.com/ory/elements/pull/530))
|
|
18
|
+
|
|
19
|
+
### ❤️ Thank You
|
|
20
|
+
|
|
21
|
+
- hackerman @aeneasr
|
|
22
|
+
- Jonas Hungershausen
|
|
23
|
+
|
|
1
24
|
## 1.0.0-rc.3 (2025-05-09)
|
|
2
25
|
|
|
3
26
|
### 🩹 Fixes
|
package/DEVELOPMENT.md
CHANGED
|
@@ -73,7 +73,8 @@ Usage:
|
|
|
73
73
|
```bash
|
|
74
74
|
./scripts/release.sh <project> <tag>
|
|
75
75
|
|
|
76
|
-
./scripts/release.sh @ory/elements-react next
|
|
76
|
+
./scripts/release.sh @ory/elements-react next # next release preview (-next.X)
|
|
77
|
+
./scripts/release.sh @ory/elements-react rc # release candidate (-rc.X)
|
|
77
78
|
```
|
|
78
79
|
|
|
79
80
|
The script asks the user before executing each steps. Please double check
|
package/dist/index.js
CHANGED
|
@@ -272,12 +272,25 @@ function useNodeGroupsWithVisibleNodes(nodes) {
|
|
|
272
272
|
}
|
|
273
273
|
|
|
274
274
|
// src/components/card/two-step/utils.ts
|
|
275
|
+
function isScreenSelectionNode(node) {
|
|
276
|
+
if ("name" in node.attributes && node.attributes.name === "screen" && "value" in node.attributes && node.attributes.value === "previous") {
|
|
277
|
+
return true;
|
|
278
|
+
}
|
|
279
|
+
if (node.group === clientFetch.UiNodeGroupEnum.IdentifierFirst && "name" in node.attributes && node.attributes.name === "identifier" && node.attributes.type === "hidden") {
|
|
280
|
+
return true;
|
|
281
|
+
}
|
|
282
|
+
return false;
|
|
283
|
+
}
|
|
275
284
|
function isChoosingMethod(flow) {
|
|
276
|
-
|
|
277
|
-
(
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
285
|
+
if (flow.flowType === clientFetch.FlowType.Login) {
|
|
286
|
+
if (flow.flow.requested_aal === "aal2") {
|
|
287
|
+
return true;
|
|
288
|
+
}
|
|
289
|
+
if (flow.flow.refresh) {
|
|
290
|
+
return true;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
return flow.flow.ui.nodes.some(isScreenSelectionNode);
|
|
281
294
|
}
|
|
282
295
|
function getFinalNodes(uniqueGroups, selectedGroup) {
|
|
283
296
|
var _a, _b, _c, _d;
|
|
@@ -322,16 +335,16 @@ function parseStateFromFlow(flow) {
|
|
|
322
335
|
return { current: "method_active", method: "code" };
|
|
323
336
|
} else if (methodWithMessage) {
|
|
324
337
|
return { current: "method_active", method: methodWithMessage.group };
|
|
338
|
+
} else if ((_a = flow.flow.ui.messages) == null ? void 0 : _a.some((m) => m.id === 1010016)) {
|
|
339
|
+
return { current: "select_method" };
|
|
325
340
|
} else if (flow.flow.active && !["default", "identifier_first"].includes(flow.flow.active)) {
|
|
326
341
|
return { current: "method_active", method: flow.flow.active };
|
|
327
342
|
} else if (isChoosingMethod(flow)) {
|
|
328
343
|
const authMethods = nodesToAuthMethodGroups(flow.flow.ui.nodes);
|
|
329
|
-
if (authMethods.length === 1 && authMethods[0]
|
|
344
|
+
if (authMethods.length === 1 && !["code", "passkey"].includes(authMethods[0])) {
|
|
330
345
|
return { current: "method_active", method: authMethods[0] };
|
|
331
346
|
}
|
|
332
347
|
return { current: "select_method" };
|
|
333
|
-
} else if ((_a = flow.flow.ui.messages) == null ? void 0 : _a.some((m) => m.id === 1010016)) {
|
|
334
|
-
return { current: "select_method" };
|
|
335
348
|
}
|
|
336
349
|
return { current: "provide_identifier" };
|
|
337
350
|
}
|
|
@@ -682,6 +695,134 @@ function replaceWindowFlowId(flow) {
|
|
|
682
695
|
url.searchParams.set("flow", flow);
|
|
683
696
|
window.location.href = url.toString();
|
|
684
697
|
}
|
|
698
|
+
function isGenericErrorResponse(response) {
|
|
699
|
+
return typeof response === "object" && !!response && "error" in response && typeof response.error === "object" && !!response.error && "id" in response.error;
|
|
700
|
+
}
|
|
701
|
+
function isNeedsPrivilegedSessionError(response) {
|
|
702
|
+
return isGenericErrorResponse(response) && response.error.id === "session_refresh_required";
|
|
703
|
+
}
|
|
704
|
+
function isSelfServiceFlowExpiredError(response) {
|
|
705
|
+
return isGenericErrorResponse(response) && response.error.id === "self_service_flow_expired";
|
|
706
|
+
}
|
|
707
|
+
function isBrowserLocationChangeRequired(response) {
|
|
708
|
+
return isGenericErrorResponse(response) && isGenericErrorResponse(response) && response.error.id === "browser_location_change_required";
|
|
709
|
+
}
|
|
710
|
+
function isAddressNotVerified(response) {
|
|
711
|
+
return isGenericErrorResponse(response) && response.error.id === "session_verified_address_required";
|
|
712
|
+
}
|
|
713
|
+
function isCsrfError(response) {
|
|
714
|
+
return isGenericErrorResponse(response) && response.error.id === "security_csrf_violation";
|
|
715
|
+
}
|
|
716
|
+
var isResponseError = (err) => {
|
|
717
|
+
if (err instanceof clientFetch.ResponseError) {
|
|
718
|
+
return true;
|
|
719
|
+
}
|
|
720
|
+
return typeof err === "object" && !!err && "name" in err && err.name === "ResponseError";
|
|
721
|
+
};
|
|
722
|
+
var isFetchError = (err) => {
|
|
723
|
+
return err instanceof clientFetch.FetchError;
|
|
724
|
+
};
|
|
725
|
+
|
|
726
|
+
// src/util/sdk-helpers/urlHelpers.ts
|
|
727
|
+
var verificationUrl = (config) => config.sdk.url + "/self-service/verification/browser";
|
|
728
|
+
var handleFlowError = (opts) => async (err) => {
|
|
729
|
+
var _a;
|
|
730
|
+
if (!isResponseError(err)) {
|
|
731
|
+
if (isFetchError(err)) {
|
|
732
|
+
throw new clientFetch.FetchError(
|
|
733
|
+
err,
|
|
734
|
+
"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."
|
|
735
|
+
);
|
|
736
|
+
}
|
|
737
|
+
throw err;
|
|
738
|
+
}
|
|
739
|
+
const contentType = err.response.headers.get("content-type") || "";
|
|
740
|
+
if (contentType.includes("application/json")) {
|
|
741
|
+
const body = await toBody(err.response);
|
|
742
|
+
if (isSelfServiceFlowExpiredError(body)) {
|
|
743
|
+
opts.onRestartFlow(body.use_flow_id);
|
|
744
|
+
return;
|
|
745
|
+
} else if (isAddressNotVerified(body)) {
|
|
746
|
+
for (const continueWith of ((_a = body.error.details) == null ? void 0 : _a.continue_with) || []) {
|
|
747
|
+
if (continueWith.action === "show_verification_ui" && continueWith.flow.url) {
|
|
748
|
+
opts.onRedirect(continueWith.flow.url, true);
|
|
749
|
+
return;
|
|
750
|
+
}
|
|
751
|
+
}
|
|
752
|
+
opts.onRedirect(verificationUrl(opts.config), true);
|
|
753
|
+
return;
|
|
754
|
+
} else if (isBrowserLocationChangeRequired(body) && body.redirect_browser_to) {
|
|
755
|
+
opts.onRedirect(body.redirect_browser_to, true);
|
|
756
|
+
return;
|
|
757
|
+
} else if (isNeedsPrivilegedSessionError(body) && body.redirect_browser_to) {
|
|
758
|
+
opts.onRedirect(body.redirect_browser_to, true);
|
|
759
|
+
return;
|
|
760
|
+
} else if (isCsrfError(body)) {
|
|
761
|
+
opts.onRestartFlow();
|
|
762
|
+
return;
|
|
763
|
+
}
|
|
764
|
+
switch (err.response.status) {
|
|
765
|
+
case 404:
|
|
766
|
+
opts.onRestartFlow();
|
|
767
|
+
return;
|
|
768
|
+
case 410:
|
|
769
|
+
opts.onRestartFlow();
|
|
770
|
+
return;
|
|
771
|
+
case 400:
|
|
772
|
+
return opts.onValidationError(
|
|
773
|
+
await err.response.json()
|
|
774
|
+
);
|
|
775
|
+
case 403:
|
|
776
|
+
opts.onRestartFlow();
|
|
777
|
+
return;
|
|
778
|
+
case 422: {
|
|
779
|
+
throw new clientFetch.ResponseError(
|
|
780
|
+
err.response,
|
|
781
|
+
"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()
|
|
782
|
+
);
|
|
783
|
+
}
|
|
784
|
+
}
|
|
785
|
+
throw new clientFetch.ResponseError(
|
|
786
|
+
err.response,
|
|
787
|
+
"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()
|
|
788
|
+
);
|
|
789
|
+
} else if (
|
|
790
|
+
// Not a JSON response? If it's a text response we will return an error informing the user that the response is not JSON.
|
|
791
|
+
contentType.includes("text/") || contentType.includes("html") || contentType.includes("xml")
|
|
792
|
+
) {
|
|
793
|
+
await logResponseError(err.response, true);
|
|
794
|
+
throw new clientFetch.ResponseError(
|
|
795
|
+
err.response,
|
|
796
|
+
`The Ory API endpoint returned an unexpected HTML or text response. Check your console output for details.`
|
|
797
|
+
);
|
|
798
|
+
}
|
|
799
|
+
await logResponseError(err.response, false);
|
|
800
|
+
throw new clientFetch.ResponseError(
|
|
801
|
+
err.response,
|
|
802
|
+
"The Ory API endpoint returned unexpected content type `" + contentType + "`. Check your console output for details."
|
|
803
|
+
);
|
|
804
|
+
};
|
|
805
|
+
async function toBody(response) {
|
|
806
|
+
try {
|
|
807
|
+
return await response.clone().json();
|
|
808
|
+
} catch (e) {
|
|
809
|
+
await logResponseError(response, true, [e]);
|
|
810
|
+
throw new clientFetch.ResponseError(
|
|
811
|
+
response,
|
|
812
|
+
"Unable to decode API response using JSON."
|
|
813
|
+
);
|
|
814
|
+
}
|
|
815
|
+
}
|
|
816
|
+
async function logResponseError(response, printBody, wrap) {
|
|
817
|
+
console.error("Unable to decode API response", {
|
|
818
|
+
response: {
|
|
819
|
+
status: response.status,
|
|
820
|
+
headers: Object.fromEntries(response.headers.entries()),
|
|
821
|
+
body: printBody ? await response.clone().text() : void 0
|
|
822
|
+
},
|
|
823
|
+
errors: wrap
|
|
824
|
+
});
|
|
825
|
+
}
|
|
685
826
|
|
|
686
827
|
// src/util/onSubmitLogin.ts
|
|
687
828
|
async function onSubmitLogin({ flow }, config, {
|
|
@@ -703,7 +844,7 @@ async function onSubmitLogin({ flow }, config, {
|
|
|
703
844
|
window.location.href = // eslint-disable-next-line promise/always-return
|
|
704
845
|
(_a2 = flow.return_to) != null ? _a2 : config.sdk.url + "/self-service/login/browser";
|
|
705
846
|
}).catch(
|
|
706
|
-
|
|
847
|
+
handleFlowError({
|
|
707
848
|
onRestartFlow: (useFlowId) => {
|
|
708
849
|
if (useFlowId) {
|
|
709
850
|
replaceWindowFlowId(useFlowId);
|
|
@@ -717,7 +858,8 @@ async function onSubmitLogin({ flow }, config, {
|
|
|
717
858
|
flowType: clientFetch.FlowType.Login
|
|
718
859
|
});
|
|
719
860
|
},
|
|
720
|
-
onRedirect
|
|
861
|
+
onRedirect,
|
|
862
|
+
config
|
|
721
863
|
})
|
|
722
864
|
);
|
|
723
865
|
}
|
|
@@ -742,7 +884,7 @@ async function onSubmitRecovery({ flow }, config, {
|
|
|
742
884
|
flowType: clientFetch.FlowType.Recovery
|
|
743
885
|
});
|
|
744
886
|
}).catch(
|
|
745
|
-
|
|
887
|
+
handleFlowError({
|
|
746
888
|
onRestartFlow: (useFlowId) => {
|
|
747
889
|
if (useFlowId) {
|
|
748
890
|
replaceWindowFlowId(useFlowId);
|
|
@@ -761,7 +903,8 @@ async function onSubmitRecovery({ flow }, config, {
|
|
|
761
903
|
});
|
|
762
904
|
}
|
|
763
905
|
},
|
|
764
|
-
onRedirect
|
|
906
|
+
onRedirect,
|
|
907
|
+
config
|
|
765
908
|
})
|
|
766
909
|
);
|
|
767
910
|
}
|
|
@@ -796,7 +939,7 @@ async function onSubmitRegistration({ flow }, config, {
|
|
|
796
939
|
}
|
|
797
940
|
onRedirect(clientFetch.registrationUrl(config), true);
|
|
798
941
|
}).catch(
|
|
799
|
-
|
|
942
|
+
handleFlowError({
|
|
800
943
|
onRestartFlow: (useFlowId) => {
|
|
801
944
|
if (useFlowId) {
|
|
802
945
|
replaceWindowFlowId(useFlowId);
|
|
@@ -810,7 +953,8 @@ async function onSubmitRegistration({ flow }, config, {
|
|
|
810
953
|
flowType: clientFetch.FlowType.Registration
|
|
811
954
|
});
|
|
812
955
|
},
|
|
813
|
-
onRedirect
|
|
956
|
+
onRedirect,
|
|
957
|
+
config
|
|
814
958
|
})
|
|
815
959
|
);
|
|
816
960
|
}
|
|
@@ -835,7 +979,7 @@ async function onSubmitSettings({ flow }, config, {
|
|
|
835
979
|
flowType: clientFetch.FlowType.Settings
|
|
836
980
|
});
|
|
837
981
|
}).catch(
|
|
838
|
-
|
|
982
|
+
handleFlowError({
|
|
839
983
|
onRestartFlow: (useFlowId) => {
|
|
840
984
|
if (useFlowId) {
|
|
841
985
|
replaceWindowFlowId(useFlowId);
|
|
@@ -849,7 +993,8 @@ async function onSubmitSettings({ flow }, config, {
|
|
|
849
993
|
flowType: clientFetch.FlowType.Settings
|
|
850
994
|
});
|
|
851
995
|
},
|
|
852
|
-
onRedirect
|
|
996
|
+
onRedirect,
|
|
997
|
+
config
|
|
853
998
|
})
|
|
854
999
|
).catch((err) => {
|
|
855
1000
|
if (clientFetch.isResponseError(err)) {
|
|
@@ -877,7 +1022,7 @@ async function onSubmitVerification({ flow }, config, {
|
|
|
877
1022
|
flowType: clientFetch.FlowType.Verification
|
|
878
1023
|
})
|
|
879
1024
|
).catch(
|
|
880
|
-
|
|
1025
|
+
handleFlowError({
|
|
881
1026
|
onRestartFlow: (useFlowId) => {
|
|
882
1027
|
if (useFlowId) {
|
|
883
1028
|
replaceWindowFlowId(useFlowId);
|
|
@@ -891,7 +1036,8 @@ async function onSubmitVerification({ flow }, config, {
|
|
|
891
1036
|
flowType: clientFetch.FlowType.Verification
|
|
892
1037
|
});
|
|
893
1038
|
},
|
|
894
|
-
onRedirect
|
|
1039
|
+
onRedirect,
|
|
1040
|
+
config
|
|
895
1041
|
})
|
|
896
1042
|
);
|
|
897
1043
|
}
|
|
@@ -1073,7 +1219,8 @@ var messageIdsToHide = [
|
|
|
1073
1219
|
1010004,
|
|
1074
1220
|
1010014,
|
|
1075
1221
|
1040005,
|
|
1076
|
-
1010016
|
|
1222
|
+
1010016,
|
|
1223
|
+
1010003
|
|
1077
1224
|
];
|
|
1078
1225
|
function OryCardValidationMessages({ ...props }) {
|
|
1079
1226
|
var _a;
|
|
@@ -1104,9 +1251,9 @@ var NodeInput = ({
|
|
|
1104
1251
|
...attrs
|
|
1105
1252
|
} = attributes;
|
|
1106
1253
|
const isResendNode = ((_a = node.meta.label) == null ? void 0 : _a.id) === 1070008;
|
|
1107
|
-
const
|
|
1254
|
+
const isScreenSelectionNode2 = "name" in node.attributes && node.attributes.name === "screen";
|
|
1108
1255
|
const setFormValue = () => {
|
|
1109
|
-
if (attrs.value && !(isResendNode ||
|
|
1256
|
+
if (attrs.value && !(isResendNode || isScreenSelectionNode2 || node.group === clientFetch.UiNodeGroupEnum.Oauth2Consent)) {
|
|
1110
1257
|
setValue(attrs.name, attrs.value);
|
|
1111
1258
|
}
|
|
1112
1259
|
};
|
|
@@ -1163,7 +1310,7 @@ var NodeInput = ({
|
|
|
1163
1310
|
}
|
|
1164
1311
|
);
|
|
1165
1312
|
}
|
|
1166
|
-
if (isResendNode ||
|
|
1313
|
+
if (isResendNode || isScreenSelectionNode2) {
|
|
1167
1314
|
return null;
|
|
1168
1315
|
}
|
|
1169
1316
|
if (node.group === "oauth2_consent") {
|
|
@@ -1245,7 +1392,8 @@ var Node = ({ node, onClick }) => {
|
|
|
1245
1392
|
{
|
|
1246
1393
|
crossOrigin: crossorigin,
|
|
1247
1394
|
referrerPolicy: referrerpolicy,
|
|
1248
|
-
...attributes
|
|
1395
|
+
...attributes,
|
|
1396
|
+
integrity: ""
|
|
1249
1397
|
}
|
|
1250
1398
|
);
|
|
1251
1399
|
}
|
|
@@ -1403,15 +1551,17 @@ function toAuthMethodPickerOptions(visibleGroups) {
|
|
|
1403
1551
|
}
|
|
1404
1552
|
function OryTwoStepCardStateSelectMethod() {
|
|
1405
1553
|
var _a, _b, _c, _d;
|
|
1406
|
-
const { Form, Card
|
|
1554
|
+
const { Form, Card } = useComponents();
|
|
1407
1555
|
const { flow, flowType, dispatchFormState } = useOryFlow();
|
|
1408
1556
|
const { ui } = flow;
|
|
1409
|
-
const intl = reactIntl.useIntl();
|
|
1410
1557
|
const nodeSorter = useNodeSorter();
|
|
1411
1558
|
const sortNodes = (a, b) => nodeSorter(a, b, { flowType });
|
|
1412
1559
|
const visibleGroups = useNodeGroupsWithVisibleNodes(ui.nodes);
|
|
1413
1560
|
const authMethodBlocks = toAuthMethodPickerOptions(visibleGroups);
|
|
1414
1561
|
const authMethodAdditionalNodes = useFunctionalNodes(ui.nodes);
|
|
1562
|
+
const hiddenNodes = ui.nodes.filter(
|
|
1563
|
+
(n) => n.attributes.node_type === "input" && n.attributes.type === "hidden" || clientFetch.isUiNodeScriptAttributes(n.attributes)
|
|
1564
|
+
);
|
|
1415
1565
|
if (clientFetch.UiNodeGroupEnum.Code in authMethodBlocks) {
|
|
1416
1566
|
let identifier = (_b = (_a = findNode(ui.nodes, {
|
|
1417
1567
|
group: "identifier_first",
|
|
@@ -1432,44 +1582,52 @@ function OryTwoStepCardStateSelectMethod() {
|
|
|
1432
1582
|
};
|
|
1433
1583
|
}
|
|
1434
1584
|
}
|
|
1435
|
-
const noMethods = {
|
|
1436
|
-
id: 5000002,
|
|
1437
|
-
text: intl.formatMessage({
|
|
1438
|
-
id: `identities.messages.5000002`,
|
|
1439
|
-
defaultMessage: "No authentication methods are available for this request. Please contact the site or app owner."
|
|
1440
|
-
}),
|
|
1441
|
-
type: "error"
|
|
1442
|
-
};
|
|
1443
1585
|
return /* @__PURE__ */ jsxRuntime.jsxs(OryCard, { children: [
|
|
1444
1586
|
/* @__PURE__ */ jsxRuntime.jsx(OryCardHeader, {}),
|
|
1445
1587
|
/* @__PURE__ */ jsxRuntime.jsxs(OryCardContent, { children: [
|
|
1446
1588
|
/* @__PURE__ */ jsxRuntime.jsx(OryCardValidationMessages, {}),
|
|
1447
1589
|
/* @__PURE__ */ jsxRuntime.jsx(OryFormSocialButtonsForm, {}),
|
|
1448
|
-
Object.entries(authMethodBlocks).length > 0 ? /* @__PURE__ */ jsxRuntime.
|
|
1590
|
+
Object.entries(authMethodBlocks).length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1449
1591
|
OryForm,
|
|
1450
1592
|
{
|
|
1451
1593
|
"data-testid": `ory/form/methods/local`,
|
|
1452
1594
|
onAfterSubmit: handleAfterFormSubmit(dispatchFormState),
|
|
1453
|
-
children:
|
|
1454
|
-
/* @__PURE__ */ jsxRuntime.
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1595
|
+
children: [
|
|
1596
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Form.Group, { children: [
|
|
1597
|
+
/* @__PURE__ */ jsxRuntime.jsx(Card.Divider, {}),
|
|
1598
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1599
|
+
AuthMethodList,
|
|
1600
|
+
{
|
|
1601
|
+
options: authMethodBlocks,
|
|
1602
|
+
setSelectedGroup: (group) => dispatchFormState({
|
|
1603
|
+
type: "action_select_method",
|
|
1604
|
+
method: group
|
|
1605
|
+
})
|
|
1606
|
+
}
|
|
1607
|
+
),
|
|
1608
|
+
authMethodAdditionalNodes.sort(sortNodes).map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k))
|
|
1609
|
+
] }),
|
|
1610
|
+
hiddenNodes.map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k))
|
|
1611
|
+
]
|
|
1467
1612
|
}
|
|
1468
|
-
) : !hasSingleSignOnNodes(ui.nodes) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1613
|
+
) : !hasSingleSignOnNodes(ui.nodes) && /* @__PURE__ */ jsxRuntime.jsx(NoMethodsMessage, {})
|
|
1469
1614
|
] }),
|
|
1470
1615
|
/* @__PURE__ */ jsxRuntime.jsx(OryCardFooter, {})
|
|
1471
1616
|
] });
|
|
1472
1617
|
}
|
|
1618
|
+
function NoMethodsMessage() {
|
|
1619
|
+
const intl = reactIntl.useIntl();
|
|
1620
|
+
const { Message } = useComponents();
|
|
1621
|
+
const noMethods = {
|
|
1622
|
+
id: 5000002,
|
|
1623
|
+
text: intl.formatMessage({
|
|
1624
|
+
id: `identities.messages.5000002`,
|
|
1625
|
+
defaultMessage: "No authentication methods are available for this request. Please contact the site or app owner."
|
|
1626
|
+
}),
|
|
1627
|
+
type: "error"
|
|
1628
|
+
};
|
|
1629
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { "data-testid": `ory/form/methods/local`, children: /* @__PURE__ */ jsxRuntime.jsx(Message.Root, { children: /* @__PURE__ */ jsxRuntime.jsx(Message.Content, { message: noMethods }, noMethods.id) }) });
|
|
1630
|
+
}
|
|
1473
1631
|
function OryTwoStepCard() {
|
|
1474
1632
|
const { formState } = useOryFlow();
|
|
1475
1633
|
switch (formState.current) {
|
|
@@ -2300,6 +2458,7 @@ var en_default = {
|
|
|
2300
2458
|
"two-step.webauthn.description": "Use your security key to authenticate",
|
|
2301
2459
|
"two-step.passkey.title": "Passkey (recommended)",
|
|
2302
2460
|
"two-step.passkey.description": "Use your device's for fingerprint or face recognition",
|
|
2461
|
+
"two-step.passkey.description.error": "Could not load the necessary libraries to use your Passkey. Please try again later.",
|
|
2303
2462
|
"two-step.totp.title": "Use your Authenticator App (TOTP)",
|
|
2304
2463
|
"two-step.totp.description": "Use a 6-digit one-time code from your authenticator app",
|
|
2305
2464
|
"two-step.lookup_secret.title": "Backup recovery code",
|
|
@@ -2525,12 +2684,13 @@ var de_default = {
|
|
|
2525
2684
|
"registration.title": "Konto registrieren",
|
|
2526
2685
|
"verification.registration-button": "Registrieren",
|
|
2527
2686
|
"verification.registration-label": "Sie haben noch kein Konto?",
|
|
2528
|
-
"verification.title": "Verifizieren Sie
|
|
2687
|
+
"verification.title": "Verifizieren Sie Ihr Konto",
|
|
2529
2688
|
"verification.back-button": "Zur\xFCck",
|
|
2530
2689
|
"two-step.code.description": "Ein Best\xE4tigungscode wird an Ihre E-Mail gesendet.",
|
|
2531
2690
|
"two-step.code.title": "E-Mail-Code",
|
|
2532
|
-
"two-step.passkey.description": "Verwenden Sie die Fingerabdruck- oder Gesichtserkennung Ihres Ger\xE4ts",
|
|
2533
2691
|
"two-step.passkey.title": "Passkey (empfohlen)",
|
|
2692
|
+
"two-step.passkey.description": "Verwenden Sie die Fingerabdruck- oder Gesichtserkennung Ihres Ger\xE4ts",
|
|
2693
|
+
"two-step.passkey.description.error": "Konnte die erforderlichen Bibliotheken f\xFCr Passkeys nicht laden. Bitte versuchen Sie es sp\xE4ter erneut.",
|
|
2534
2694
|
"two-step.password.description": "Geben Sie Ihr Passwort ein, das mit Ihrem Konto verkn\xFCpft ist",
|
|
2535
2695
|
"two-step.password.title": "Passwort",
|
|
2536
2696
|
"two-step.webauthn.title": "Sicherheitsschl\xFCssel",
|
|
@@ -2568,14 +2728,14 @@ var de_default = {
|
|
|
2568
2728
|
"card.header.parts.password.login": "Ihrer {identifierLabel} und Ihrem Passwort",
|
|
2569
2729
|
"card.header.parts.password.registration": "Ihrer {identifierLabel} und einem Passwort",
|
|
2570
2730
|
"card.header.parts.webauthn": "ein Sicherheitsschl\xFCssel",
|
|
2571
|
-
"card.header.parts.totp": "
|
|
2731
|
+
"card.header.parts.totp": "Ihre Authentifikator-App",
|
|
2572
2732
|
"card.header.parts.lookup_secret": "ein Backup-Wiederherstellungscode",
|
|
2573
2733
|
"recovery.subtitle": "Geben Sie die mit Ihrem Konto verkn\xFCpfte E-Mail-Adresse ein, um einen einmaligen Zugangscode zu erhalten",
|
|
2574
2734
|
"verification.subtitle": "Geben Sie die mit Ihrem Konto verkn\xFCpfte E-Mail-Adresse ein, um es zu best\xE4tigen",
|
|
2575
2735
|
"card.header.description.login": "Melden Sie sich mit {identifierLabel} an",
|
|
2576
2736
|
"card.header.description.registration": "Registrieren Sie sich mit {identifierLabel}",
|
|
2577
2737
|
"login.subtitle": "Melden Sie sich mit {parts} an",
|
|
2578
|
-
"login.subtitle-refresh": "Best\xE4tigen Sie
|
|
2738
|
+
"login.subtitle-refresh": "Best\xE4tigen Sie Ihre Identit\xE4t mit {parts}",
|
|
2579
2739
|
"misc.or": "oder",
|
|
2580
2740
|
"registration.subtitle": "Registrieren Sie sich mit {parts}",
|
|
2581
2741
|
"forms.label.forgot-password": "Passwort vergessen?",
|
|
@@ -2828,6 +2988,7 @@ var es_default = {
|
|
|
2828
2988
|
"two-step.code.title": "C\xF3digo de correo electr\xF3nico",
|
|
2829
2989
|
"two-step.passkey.description": "Utiliza el reconocimiento de huellas dactilares o facial de tu dispositivo.",
|
|
2830
2990
|
"two-step.passkey.title": "Clave de acceso (recomendada)",
|
|
2991
|
+
"two-step.passkey.description.error": "No se pudieron cargar las bibliotecas necesarias para usar su Passkey. Por favor, int\xE9ntelo de nuevo m\xE1s tarde",
|
|
2831
2992
|
"two-step.password.description": "Ingrese la contrase\xF1a asociada con su cuenta",
|
|
2832
2993
|
"two-step.password.title": "Contrase\xF1a",
|
|
2833
2994
|
"two-step.webauthn.title": "Clave de Seguridad",
|
|
@@ -3116,6 +3277,7 @@ var fr_default = {
|
|
|
3116
3277
|
"two-step.code.title": "Code de courrier \xE9lectronique",
|
|
3117
3278
|
"two-step.passkey.description": "Utilisez l'appareil pour la reconnaissance d'empreintes digitales ou de visage",
|
|
3118
3279
|
"two-step.passkey.title": "Cl\xE9 de passe (recommand\xE9e)",
|
|
3280
|
+
"two-step.passkey.description.error": "Impossible de charger les biblioth\xE8ques n\xE9cessaires pour utiliser votre Passkey. Veuillez r\xE9essayer plus tard.",
|
|
3119
3281
|
"two-step.password.description": "Entrez votre mot de passe associ\xE9 \xE0 votre compte",
|
|
3120
3282
|
"two-step.password.title": "Mot de passe",
|
|
3121
3283
|
"two-step.webauthn.title": "Cl\xE9 de S\xE9curit\xE9",
|
|
@@ -3402,6 +3564,7 @@ var nl_default = {
|
|
|
3402
3564
|
"two-step.code.description": "Een verificatiecode wordt naar uw e-mail gestuurd",
|
|
3403
3565
|
"two-step.code.title": "E-mailcode",
|
|
3404
3566
|
"two-step.passkey.description": "Gebruik de vingerafdruk- of gezichtsherkenning van uw apparaat",
|
|
3567
|
+
"two-step.passkey.description.error": "De benodigde bibliotheken om uw Passkey te gebruiken konden niet worden geladen. Probeer het later opnieuw.",
|
|
3405
3568
|
"two-step.passkey.title": "Toegangscode (aanbevolen)",
|
|
3406
3569
|
"two-step.password.description": "Voer uw wachtwoord in dat is gekoppeld aan uw account",
|
|
3407
3570
|
"two-step.password.title": "Wachtwoord",
|
|
@@ -3689,6 +3852,7 @@ var pl_default = {
|
|
|
3689
3852
|
"two-step.code.description": "Kod weryfikacyjny zostanie wys\u0142any na Tw\xF3j adres email.",
|
|
3690
3853
|
"two-step.code.title": "Kod email",
|
|
3691
3854
|
"two-step.passkey.description": "U\u017Cyj swojego urz\u0105dzenia lub funkcji rozpoznawania twarzy na swoim urz\u0105dzeniu.",
|
|
3855
|
+
"two-step.passkey.description.error": "Nie uda\u0142o si\u0119 za\u0142adowa\u0107 niezb\u0119dnych bibliotek do u\u017Cycia Passkey. Spr\xF3buj ponownie p\xF3\u017Aniej.",
|
|
3692
3856
|
"two-step.passkey.title": "Klucz dost\u0119pu (zalecany)",
|
|
3693
3857
|
"two-step.password.description": "Wprowad\u017A has\u0142o powi\u0105zane z twoim kontem",
|
|
3694
3858
|
"two-step.password.title": "Has\u0142o",
|
|
@@ -3976,6 +4140,7 @@ var pt_default = {
|
|
|
3976
4140
|
"two-step.code.description": "Um c\xF3digo de verifica\xE7\xE3o ser\xE1 enviado para o seu email",
|
|
3977
4141
|
"two-step.code.title": "C\xF3digo de email",
|
|
3978
4142
|
"two-step.passkey.description": "Use o seu dispositivo para reconhecimento de impress\xE3o digital ou facial.",
|
|
4143
|
+
"two-step.passkey.description.error": "N\xE3o foi poss\xEDvel carregar as bibliotecas necess\xE1rias para usar o seu Passkey. Por favor, tente novamente mais tarde.",
|
|
3979
4144
|
"two-step.passkey.title": "Chave de acesso (recomendado)",
|
|
3980
4145
|
"two-step.password.description": "Insira a sua senha associada \xE0 sua conta",
|
|
3981
4146
|
"two-step.password.title": "Senha",
|
|
@@ -4282,6 +4447,7 @@ var sv_default = {
|
|
|
4282
4447
|
"two-step.code.title": "E-postkod",
|
|
4283
4448
|
"two-step.passkey.description": "Anv\xE4nd din enhets fingeravtryck eller ansiktsigenk\xE4nning",
|
|
4284
4449
|
"two-step.passkey.title": "Passerkod (rekommenderad)",
|
|
4450
|
+
"two-step.passkey.description.error": "Det gick inte att ladda de n\xF6dv\xE4ndiga biblioteken f\xF6r att anv\xE4nda din Passkey. F\xF6rs\xF6k igen senare.",
|
|
4285
4451
|
"two-step.password.description": "Ange ditt l\xF6senord kopplat till ditt konto",
|
|
4286
4452
|
"two-step.password.title": "L\xF6senord",
|
|
4287
4453
|
"two-step.webauthn.title": "S\xE4kerhetsnyckel",
|