@alore/auth-react-ui 1.2.0-alpha.22 → 1.2.0-alpha.24
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/dist/cjs/auth/ForgotPassword.js +24 -4
- package/dist/cjs/auth/ForgotPassword.js.map +1 -1
- package/dist/cjs/auth/Login.js +79 -72
- package/dist/cjs/auth/Login.js.map +1 -1
- package/dist/cjs/auth/Register.js +109 -66
- package/dist/cjs/auth/Register.js.map +1 -1
- package/dist/cjs/components/Auth.js +7 -2
- package/dist/cjs/components/Auth.js.map +1 -1
- package/dist/cjs/components/AuthProvider.d.ts +16 -0
- package/dist/cjs/components/BackButton.js +1 -1
- package/dist/cjs/components/BackButton.js.map +1 -1
- package/dist/cjs/components/CheckboxForm.js +2 -2
- package/dist/cjs/components/CheckboxForm.js.map +1 -1
- package/dist/cjs/components/InputForm.d.ts +2 -1
- package/dist/cjs/components/InputForm.js +2 -2
- package/dist/cjs/components/InputForm.js.map +1 -1
- package/dist/cjs/components/InputOTP.js +1 -1
- package/dist/cjs/components/InputOTP.js.map +1 -1
- package/dist/cjs/components/LinkButton.d.ts +14 -0
- package/dist/cjs/components/LinkButton.js +29 -0
- package/dist/cjs/components/LinkButton.js.map +1 -0
- package/dist/cjs/components/index.d.ts +1 -0
- package/dist/cjs/components/index.js +3 -1
- package/dist/cjs/components/index.js.map +1 -1
- package/dist/cjs/dictionaries/en.json +1 -0
- package/dist/cjs/dictionaries/pt.json +8 -7
- package/dist/cjs/get-dictionary.d.ts +3 -0
- package/dist/cjs/hooks/useAuthService.d.ts +48 -0
- package/dist/cjs/hooks/useAuthServiceInstance.d.ts +16 -0
- package/dist/cjs/hooks/useDictionary.d.ts +1 -0
- package/dist/cjs/machine/index.d.ts +32 -0
- package/dist/cjs/machine/index.js +58 -0
- package/dist/cjs/machine/index.js.map +1 -1
- package/dist/cjs/machine/types.d.ts +13 -1
- package/dist/cjs/styles/themes.js +2 -2
- package/dist/cjs/styles/themes.js.map +1 -1
- package/dist/cjs/utils/passkeyExtensions.d.ts +55 -0
- package/dist/cjs/utils/passkeyExtensions.js +77 -0
- package/dist/cjs/utils/passkeyExtensions.js.map +1 -0
- package/dist/mjs/auth/ForgotPassword.js +25 -5
- package/dist/mjs/auth/ForgotPassword.js.map +1 -1
- package/dist/mjs/auth/Login.js +79 -71
- package/dist/mjs/auth/Login.js.map +1 -1
- package/dist/mjs/auth/Register.js +110 -67
- package/dist/mjs/auth/Register.js.map +1 -1
- package/dist/mjs/components/Auth.js +7 -2
- package/dist/mjs/components/Auth.js.map +1 -1
- package/dist/mjs/components/AuthProvider.d.ts +16 -0
- package/dist/mjs/components/BackButton.js +1 -1
- package/dist/mjs/components/BackButton.js.map +1 -1
- package/dist/mjs/components/CheckboxForm.js +2 -2
- package/dist/mjs/components/CheckboxForm.js.map +1 -1
- package/dist/mjs/components/InputForm.d.ts +2 -1
- package/dist/mjs/components/InputForm.js +2 -2
- package/dist/mjs/components/InputForm.js.map +1 -1
- package/dist/mjs/components/InputOTP.js +1 -1
- package/dist/mjs/components/InputOTP.js.map +1 -1
- package/dist/mjs/components/LinkButton.d.ts +14 -0
- package/dist/mjs/components/LinkButton.js +10 -0
- package/dist/mjs/components/LinkButton.js.map +1 -0
- package/dist/mjs/components/index.d.ts +1 -0
- package/dist/mjs/components/index.js +1 -0
- package/dist/mjs/components/index.js.map +1 -1
- package/dist/mjs/dictionaries/en.json +1 -0
- package/dist/mjs/dictionaries/pt.json +8 -7
- package/dist/mjs/get-dictionary.d.ts +3 -0
- package/dist/mjs/hooks/useAuthService.d.ts +48 -0
- package/dist/mjs/hooks/useAuthServiceInstance.d.ts +16 -0
- package/dist/mjs/hooks/useDictionary.d.ts +1 -0
- package/dist/mjs/machine/index.d.ts +32 -0
- package/dist/mjs/machine/index.js +55 -0
- package/dist/mjs/machine/index.js.map +1 -1
- package/dist/mjs/machine/types.d.ts +13 -1
- package/dist/mjs/styles/themes.js +3 -2
- package/dist/mjs/styles/themes.js.map +1 -1
- package/dist/mjs/utils/passkeyExtensions.d.ts +55 -0
- package/dist/mjs/utils/passkeyExtensions.js +71 -0
- package/dist/mjs/utils/passkeyExtensions.js.map +1 -0
- package/package.json +6 -4
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* JOO-1792 / joori#2670: PRF and largeBlob WebAuthn extensions exist to transport the
|
|
4
|
+
* wallet encryption secret. They must only be requested — and only be REQUIRED — when
|
|
5
|
+
* wallet creation is enabled. With wallets disabled (the Joori deployment shape), a
|
|
6
|
+
* passkey without PRF support must register and log in normally instead of freezing or
|
|
7
|
+
* failing (previously the first-auth and login ceremonies requested prf unconditionally
|
|
8
|
+
* and treated a missing secret as fatal, freezing the signup spinner after the account
|
|
9
|
+
* had already been created server-side).
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.resolveWalletSecret = exports.buildWalletExtensions = void 0;
|
|
13
|
+
const PRF_SALT = 'Alore';
|
|
14
|
+
/**
|
|
15
|
+
* Build the WebAuthn extension request for a ceremony. Returns an empty object when
|
|
16
|
+
* wallet creation is disabled so no PRF/largeBlob negotiation happens at all.
|
|
17
|
+
*/
|
|
18
|
+
function buildWalletExtensions(purpose, enableWalletCreation, options = {}) {
|
|
19
|
+
if (!enableWalletCreation) {
|
|
20
|
+
return {};
|
|
21
|
+
}
|
|
22
|
+
const prf = { eval: { first: new TextEncoder().encode(PRF_SALT) } };
|
|
23
|
+
if (purpose === 'registration') {
|
|
24
|
+
return { prf, largeBlob: { support: 'preferred' } };
|
|
25
|
+
}
|
|
26
|
+
if (purpose === 'first-auth') {
|
|
27
|
+
const extensions = { prf };
|
|
28
|
+
if (options.singleAllowCredential && options.largeBlobWriteSecret) {
|
|
29
|
+
extensions.largeBlob = { write: options.largeBlobWriteSecret };
|
|
30
|
+
}
|
|
31
|
+
return extensions;
|
|
32
|
+
}
|
|
33
|
+
return { prf, largeBlob: { read: true } };
|
|
34
|
+
}
|
|
35
|
+
exports.buildWalletExtensions = buildWalletExtensions;
|
|
36
|
+
/**
|
|
37
|
+
* Resolve the wallet secret from a ceremony's client extension results. With wallets
|
|
38
|
+
* disabled the outcome is always supported (no secret is needed or derivable). With
|
|
39
|
+
* wallets enabled the previous semantics are preserved exactly, including the Safari
|
|
40
|
+
* largeBlob workaround.
|
|
41
|
+
*/
|
|
42
|
+
function resolveWalletSecret(enableWalletCreation,
|
|
43
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
44
|
+
extensionResults, options = {}) {
|
|
45
|
+
var _a, _b, _c, _d;
|
|
46
|
+
if (!enableWalletCreation) {
|
|
47
|
+
return { supported: true };
|
|
48
|
+
}
|
|
49
|
+
const prfSecret = (_b = (_a = extensionResults === null || extensionResults === void 0 ? void 0 : extensionResults.prf) === null || _a === void 0 ? void 0 : _a.results) === null || _b === void 0 ? void 0 : _b.first;
|
|
50
|
+
// first-auth (write mode): the secret is the blob we wrote, not a returned value.
|
|
51
|
+
const blobWritten = !!((_c = extensionResults === null || extensionResults === void 0 ? void 0 : extensionResults.largeBlob) === null || _c === void 0 ? void 0 : _c.written);
|
|
52
|
+
// login (read mode): largeBlob.blob is the stored secret itself.
|
|
53
|
+
const blobRead = (_d = extensionResults === null || extensionResults === void 0 ? void 0 : extensionResults.largeBlob) === null || _d === void 0 ? void 0 : _d.blob;
|
|
54
|
+
// Safari quirk (preserved from the original implementation): when Safari reports
|
|
55
|
+
// a largeBlob result alongside PRF, the blob wins — pre-refactor wallets on Safari
|
|
56
|
+
// derived their key from the blob, so preferring PRF would break them.
|
|
57
|
+
if (options.isSafari) {
|
|
58
|
+
if (blobWritten && options.largeBlobWriteSecret) {
|
|
59
|
+
return { supported: true, secret: options.largeBlobWriteSecret };
|
|
60
|
+
}
|
|
61
|
+
if (blobRead) {
|
|
62
|
+
return { supported: true, secret: blobRead };
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (prfSecret) {
|
|
66
|
+
return { supported: true, secret: prfSecret };
|
|
67
|
+
}
|
|
68
|
+
if (blobWritten && options.largeBlobWriteSecret) {
|
|
69
|
+
return { supported: true, secret: options.largeBlobWriteSecret };
|
|
70
|
+
}
|
|
71
|
+
if (blobRead) {
|
|
72
|
+
return { supported: true, secret: blobRead };
|
|
73
|
+
}
|
|
74
|
+
return { supported: false };
|
|
75
|
+
}
|
|
76
|
+
exports.resolveWalletSecret = resolveWalletSecret;
|
|
77
|
+
//# sourceMappingURL=passkeyExtensions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"passkeyExtensions.js","sourceRoot":"","sources":["../../../src/utils/passkeyExtensions.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAEH,MAAM,QAAQ,GAAG,OAAO,CAAC;AAgBzB;;;GAGG;AACH,SAAgB,qBAAqB,CACnC,OAA+B,EAC/B,oBAA6B,EAC7B,UAAwC,EAAE;IAE1C,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;IAEpE,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;QAC/B,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,WAAoB,EAAE,EAAE,CAAC;IAC/D,CAAC;IAED,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;QAC7B,MAAM,UAAU,GAA4B,EAAE,GAAG,EAAE,CAAC;QACpD,IAAI,OAAO,CAAC,qBAAqB,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;YAClE,UAAU,CAAC,SAAS,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,oBAAoB,EAAE,CAAC;QACjE,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,IAAa,EAAE,EAAE,CAAC;AACrD,CAAC;AAxBD,sDAwBC;AAiBD;;;;;GAKG;AACH,SAAgB,mBAAmB,CACjC,oBAA6B;AAC7B,8DAA8D;AAC9D,gBAAqB,EACrB,UAAsC,EAAE;;IAExC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC1B,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED,MAAM,SAAS,GAAG,MAAA,MAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,GAAG,0CAAE,OAAO,0CAAE,KAA+B,CAAC;IAClF,kFAAkF;IAClF,MAAM,WAAW,GAAG,CAAC,CAAC,CAAA,MAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,SAAS,0CAAE,OAAO,CAAA,CAAC;IAC3D,iEAAiE;IACjE,MAAM,QAAQ,GAAG,MAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,SAAS,0CAAE,IAA8B,CAAC;IAE7E,iFAAiF;IACjF,mFAAmF;IACnF,uEAAuE;IACvE,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,IAAI,WAAW,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;YAChD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,oBAAoB,EAAE,CAAC;QACnE,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAChD,CAAC;IAED,IAAI,WAAW,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;QAChD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,oBAAoB,EAAE,CAAC;IACnE,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC/C,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC9B,CAAC;AAzCD,kDAyCC"}
|
|
@@ -4,7 +4,7 @@ import { EnvelopeIcon, LockClosedIcon } from '@heroicons/react/20/solid';
|
|
|
4
4
|
import { yupResolver } from '@hookform/resolvers/yup';
|
|
5
5
|
import { useActor } from '@xstate/react';
|
|
6
6
|
import { Button, Card, Spinner } from 'flowbite-react';
|
|
7
|
-
import React, { useMemo } from 'react';
|
|
7
|
+
import React, { useEffect, useMemo } from 'react';
|
|
8
8
|
import { useForm, useWatch } from 'react-hook-form';
|
|
9
9
|
import { twMerge } from 'tailwind-merge';
|
|
10
10
|
import * as yup from 'yup';
|
|
@@ -15,6 +15,7 @@ import { aloreLogoBlack, authErrorImage } from '../utils';
|
|
|
15
15
|
const InputForm = React.lazy(() => import('../components/InputForm'));
|
|
16
16
|
const BackButton = React.lazy(() => import('../components/BackButton'));
|
|
17
17
|
const FormRules = React.lazy(() => import('../components/FormRules'));
|
|
18
|
+
const LinkButton = React.lazy(() => import('../components/LinkButton'));
|
|
18
19
|
const envelopIcon = () => React.createElement(EnvelopeIcon, { className: "size-4 text-gray-500" });
|
|
19
20
|
const lockClosedIcon = () => React.createElement(LockClosedIcon, { className: "size-4 text-gray-500" });
|
|
20
21
|
const ForgotPassword = ({ locale = 'pt', authServiceInstance, forgeId, logoImage, cryptoUtils, contentAlignment = 'center', titleSpacing = 'gap-y-2 sm:gap-y-7', customClassName, customStyles, logoContainerClassName, }) => {
|
|
@@ -61,6 +62,24 @@ const ForgotPassword = ({ locale = 'pt', authServiceInstance, forgeId, logoImage
|
|
|
61
62
|
useWatch({ control: passwordControl, name: ['confirmPassword'] });
|
|
62
63
|
const isLoading = useMemo(() => authState.matches('active.forgotPassword.sendingCode') ||
|
|
63
64
|
authState.matches('active.forgotPassword.savingPassword'), [authState.value]);
|
|
65
|
+
const canGoBack = useMemo(() => authState.matches('active.forgotPassword.idle') ||
|
|
66
|
+
authState.matches('active.forgotPassword.codeSent') ||
|
|
67
|
+
authState.matches('active.forgotPassword.newPassword'), [authState.value]);
|
|
68
|
+
useEffect(() => {
|
|
69
|
+
if (typeof window === 'undefined')
|
|
70
|
+
return undefined;
|
|
71
|
+
const handleEscape = (event) => {
|
|
72
|
+
if (event.key === 'Escape' && canGoBack && !isLoading) {
|
|
73
|
+
event.preventDefault();
|
|
74
|
+
sendAuth('BACK');
|
|
75
|
+
window.history.replaceState({}, '', window.location.pathname);
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
window.addEventListener('keydown', handleEscape);
|
|
79
|
+
return () => {
|
|
80
|
+
window.removeEventListener('keydown', handleEscape);
|
|
81
|
+
};
|
|
82
|
+
}, [canGoBack, isLoading, sendAuth]);
|
|
64
83
|
const onSubmitEmail = async (data) => {
|
|
65
84
|
const { email } = data;
|
|
66
85
|
sendAuth({
|
|
@@ -190,9 +209,10 @@ const ForgotPassword = ({ locale = 'pt', authServiceInstance, forgeId, logoImage
|
|
|
190
209
|
isLoading && React.createElement(Spinner, { className: "mr-3 !h-5 w-full !fill-gray-300" }),
|
|
191
210
|
forgotPasswordDictionary?.sendCode)),
|
|
192
211
|
React.createElement("div", { className: "h-[0.5px] w-full bg-gray-300" }),
|
|
193
|
-
React.createElement("
|
|
212
|
+
React.createElement("p", { className: `text-sm font-medium ${getTextAlignmentClass}` },
|
|
194
213
|
dictionary?.auth.login?.dontHaveAccount,
|
|
195
|
-
|
|
214
|
+
' ',
|
|
215
|
+
React.createElement(LinkButton, { "data-testid": "sign-up-button", className: "text-sm", onClick: () => {
|
|
196
216
|
sendAuth(['RESET', { type: 'INITIALIZE', forgeId }, 'SIGN_UP']);
|
|
197
217
|
} }, dictionary?.auth.login?.signUp)))));
|
|
198
218
|
}, [
|
|
@@ -232,8 +252,8 @@ const ForgotPassword = ({ locale = 'pt', authServiceInstance, forgeId, logoImage
|
|
|
232
252
|
React.createElement("span", { className: `font-poppins text-alr-grey mb-5 text-xl font-bold ${getTextAlignmentClass}` }, forgotPasswordDictionary?.newPasswordTitle),
|
|
233
253
|
React.createElement("span", { className: `text-alr-grey mb-5 text-sm font-medium ${getTextAlignmentClass}` }, forgotPasswordDictionary?.newPasswordDescription),
|
|
234
254
|
React.createElement("form", { onSubmit: handleSubmitPassword((data) => onSubmitPassword(data)), className: "flex flex-col gap-y-4" },
|
|
235
|
-
React.createElement(InputForm, { control: passwordControl, errors: passwordErrors, name: "password", autoFocus: true, icon: lockClosedIcon, placeholder: forgotPasswordDictionary?.passwordLabel, label: forgotPasswordDictionary?.passwordLabel, type: "password", "data-testid": "forgot-password-password-input", disabled: isLoading }),
|
|
236
|
-
React.createElement(InputForm, { control: passwordControl, errors: passwordErrors, name: "confirmPassword", placeholder: forgotPasswordDictionary?.confirmPasswordLabel, label: forgotPasswordDictionary?.confirmPasswordLabel, icon: lockClosedIcon, type: "password", "data-testid": "forgot-password-confirm-password-input", disabled: isLoading }),
|
|
255
|
+
React.createElement(InputForm, { control: passwordControl, errors: passwordErrors, name: "password", autoFocus: true, icon: lockClosedIcon, placeholder: forgotPasswordDictionary?.passwordLabel, label: forgotPasswordDictionary?.passwordLabel, type: "password", passwordToggleLabel: dictionary?.auth.togglePasswordVisibility, "data-testid": "forgot-password-password-input", disabled: isLoading }),
|
|
256
|
+
React.createElement(InputForm, { control: passwordControl, errors: passwordErrors, name: "confirmPassword", placeholder: forgotPasswordDictionary?.confirmPasswordLabel, label: forgotPasswordDictionary?.confirmPasswordLabel, icon: lockClosedIcon, type: "password", passwordToggleLabel: dictionary?.auth.togglePasswordVisibility, "data-testid": "forgot-password-confirm-password-input", disabled: isLoading }),
|
|
237
257
|
React.createElement(FormRules, { locale: locale, className: "!gap-y-1 md:!gap-y-2", passwordValues: getValuesPassword(), userValues: { email: getValuesEmail('email') } }),
|
|
238
258
|
React.createElement(Button, { "data-testid": "forgot-password-submit-button", type: "submit", disabled: isPasswordSubmitDisabled || isLoading },
|
|
239
259
|
isLoading && React.createElement(Spinner, { className: "mr-3 !h-5 w-full !fill-gray-300" }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ForgotPassword.js","sourceRoot":"","sources":["../../../src/auth/ForgotPassword.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,8CAA8C;AAC9C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAe,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAE3B,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,aAAa,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1D,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC;AACtE,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC;AACxE,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC;AAEtE,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,oBAAC,YAAY,IAAC,SAAS,EAAC,sBAAsB,GAAG,CAAC;AAC5E,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,oBAAC,cAAc,IAAC,SAAS,EAAC,sBAAsB,GAAG,CAAC;AA8BjF,MAAM,cAAc,GAAG,CAAC,EACtB,MAAM,GAAG,IAAI,EACb,mBAAmB,EACnB,OAAO,EACP,SAAS,EACT,WAAW,EACX,gBAAgB,GAAG,QAAQ,EAC3B,YAAY,GAAG,oBAAoB,EACnC,eAAe,EACf,YAAY,EACZ,sBAAsB,GACF,EAAE,EAAE;IACxB,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,GAAG,WAAW,CAAC;IACzD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,wBAAwB,GAAG,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC;IAEjE,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAC5D,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,qBAAqB,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC;IAErE,MAAM,YAAY,GAAG,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAC;IAC7C,MAAM,eAAe,GAAG,CAAC,CAAC,YAAY,CAAC;IAEvC,MAAM,eAAe,GAAG,GAAG;SACxB,MAAM,CAAC;QACN,KAAK,EAAE,GAAG;aACP,MAAM,EAAE;aACR,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC,QAAQ,CAAC;aAC7C,KAAK,CAAC,UAAU,EAAE,cAAc,CAAC,YAAY,CAAC;KAClD,CAAC;SACD,QAAQ,EAAE,CAAC;IAEd,MAAM,kBAAkB,GAAG,GAAG;SAC3B,MAAM,CAAC;QACN,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC,QAAQ,CAAC;QACpE,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC,QAAQ,CAAC;KAC5E,CAAC;SACD,QAAQ,EAAE,CAAC;IAEd,MAAM,kBAAkB,GAAgB;QACtC,KAAK,EAAE,EAAE;KACV,CAAC;IAEF,MAAM,EACJ,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,EAClC,YAAY,EAAE,iBAAiB,EAC/B,SAAS,EAAE,cAAc,GAC1B,GAAG,OAAO,CAAC;QACV,QAAQ,EAAE,WAAW,CAAC,eAAe,CAAC;QACtC,IAAI,EAAE,UAAU;QAChB,cAAc,EAAE,UAAU;QAC1B,aAAa,EAAE,kBAAkB;KAClC,CAAC,CAAC;IACH,QAAQ,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAErD,MAAM,qBAAqB,GAAgB;QACzC,QAAQ,EAAE,EAAE;QACZ,eAAe,EAAE,EAAE;KACpB,CAAC;IAEF,MAAM,EACJ,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,mBAAmB,EAAE,EACvE,YAAY,EAAE,oBAAoB,EAClC,SAAS,EAAE,iBAAiB,GAC7B,GAAG,OAAO,CAAC;QACV,QAAQ,EAAE,WAAW,CAAC,kBAAkB,CAAC;QACzC,aAAa,EAAE,qBAAqB;KACrC,CAAC,CAAC;IACH,QAAQ,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC3D,QAAQ,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAElE,MAAM,SAAS,GAAG,OAAO,CACvB,GAAG,EAAE,CACH,SAAS,CAAC,OAAO,CAAC,mCAAmC,CAAC;QACtD,SAAS,CAAC,OAAO,CAAC,sCAAsC,CAAC,EAC3D,CAAC,SAAS,CAAC,KAAK,CAAC,CAClB,CAAC;IAEF,MAAM,aAAa,GAAG,KAAK,EAAE,IAA+B,EAAE,EAAE;QAC9D,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAEvB,QAAQ,CAAC;YACP,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE;gBACP,KAAK;gBACL,MAAM;aACP;SACF,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,KAAK,EAAE,IAAkC,EAAE,EAAE;QACpE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAC1B,MAAM,IAAI,GAAG,qBAAqB,EAAE,IAAI,CAAC;QACzC,MAAM,KAAK,GAAG,qBAAqB,EAAE,KAAK,CAAC;QAC3C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC;QACvC,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;QAEvC,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;YAClB,MAAM,iBAAiB,GAAG,MAAM,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YAE9E,QAAQ,CAAC;gBACP,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EAAE;oBACP,IAAI;oBACJ,KAAK;oBACL,YAAY,EAAE,iBAAiB;oBAC/B,MAAM;iBACP;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,wBAAwB,GAAG,OAAO,CAAC,GAAG,EAAE;QAC5C,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;QAC3C,MAAM,cAAc,GAAG,EAAE,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1D,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC7B,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,cAAc,CAAC,EAAE,CAAC;gBAC1D,OAAO,GAAG,KAAK,CAAC;YAClB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,OAAO,CAAC;IAClB,CAAC,EAAE,CAAC,iBAAiB,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAE/C,uDAAuD;IACvD,MAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,EAAE;QACvC,MAAM,YAAY,GAAG;YACnB,IAAI,EAAE,uBAAuB;YAC7B,MAAM,EAAE,0BAA0B;YAClC,KAAK,EAAE,sBAAsB;SAC9B,CAAC;QACF,OAAO,YAAY,CAAC,gBAAgB,CAAC,CAAC;IACxC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEvB,0CAA0C;IAC1C,MAAM,qBAAqB,GAAG,OAAO,CAAC,GAAG,EAAE;QACzC,MAAM,gBAAgB,GAAG;YACvB,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,aAAa;YACrB,KAAK,EAAE,YAAY;SACpB,CAAC;QACF,OAAO,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEvB,qDAAqD;IACrD,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE;QACpC,IAAI,CAAC,YAAY;YAAE,OAAO,EAAE,CAAC;QAE7B,MAAM,MAAM,GAAwB,EAAE,CAAC;QAEvC,IAAI,YAAY,CAAC,YAAY;YAAE,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;QAC/E,IAAI,YAAY,CAAC,WAAW;YAAE,MAAM,CAAC,WAAW,GAAG,YAAY,CAAC,WAAW,CAAC;QAC5E,IAAI,YAAY,CAAC,WAAW;YAAE,MAAM,CAAC,WAAW,GAAG,YAAY,CAAC,WAAW,CAAC;QAC5E,IAAI,YAAY,CAAC,eAAe;YAAE,MAAM,CAAC,eAAe,GAAG,YAAY,CAAC,eAAe,CAAC;QACxF,IAAI,YAAY,CAAC,OAAO;YAAE,MAAM,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;QAChE,IAAI,YAAY,CAAC,SAAS;YAAE,MAAM,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;QAEtE,OAAO,MAAM,CAAC;IAChB,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,IAAI,cAAc,GAAG,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC;QAC5D,IAAI,oBAAoB,GAAG,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC;QAEhE,6BAA6B;QAC7B,IAAI,QAAQ,EAAE,OAAO,EAAE,CAAC;YACtB,QAAQ,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACzB,KAAK,iBAAiB,CAAC;gBACvB,KAAK,iBAAiB;oBACpB,cAAc,GAAG,wBAAwB,EAAE,mBAAmB,CAAC;oBAC/D,oBAAoB,GAAG,wBAAwB,EAAE,yBAAyB,CAAC;oBAC3E,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,CAAC;gBAClD,KAAK,mBAAmB;oBACtB,cAAc,GAAG,UAAU,EAAE,IAAI,EAAE,qBAAqB,CAAC;oBACzD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,CAAC;gBAClD;oBACE,MAAM;YACV,CAAC;QACH,CAAC;QAED,0CAA0C;QAC1C,MAAM,KAAK,GAAG,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC;QAE3C,IAAI,YAAY,KAAK,mBAAmB,EAAE,CAAC;YACzC,cAAc,GAAG,UAAU,EAAE,IAAI,EAAE,qBAAqB,CAAC;YACzD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,CAAC;QAClD,CAAC;QAED,IAAI,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7D,cAAc,GAAG,wBAAwB,EAAE,WAAW,CAAC;YACvD,oBAAoB,GAAG,wBAAwB,EAAE,sBAAsB,CAAC;QAC1E,CAAC;QAED,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,CAAC;IAClD,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE;QAClC,MAAM,EAAE,cAAc,EAAE,oBAAoB,EAAE,GAAG,YAAY,EAAE,CAAC;QAChE,OAAO,CACL,4CAAiB,4BAA4B;YAC3C,oBAAC,UAAU,IACT,SAAS,EAAC,MAAM,EAChB,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAE,GAAG,EAAE;oBACZ,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACjB,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAChE,CAAC,IAEA,UAAU,EAAE,IAAI,CACN;YACZ,eAAe,CAAC,CAAC,CAAC,CACjB,6BAAK,SAAS,EAAC,iDAAiD;gBAC9D,6BACE,GAAG,EAAE,cAAc,EACnB,GAAG,EAAC,OAAO,EACX,KAAK,EAAE,EAAE,GACT;gBACF,6BAAK,SAAS,EAAE,uBAAuB,mBAAmB,EAAE;oBAC1D,8BACE,SAAS,EAAE,+CAA+C,qBAAqB,EAAE,IAEhF,cAAc,CACV;oBACP,8BAAM,SAAS,EAAE,6BAA6B,qBAAqB,EAAE,IAClE,oBAAoB,CAChB;oBACN,QAAQ,EAAE,IAAI,IAAI,CACjB,8BACE,SAAS,EAAE,8BAA8B,qBAAqB,EAAE,IAChE,GAAG,wBAAwB,EAAE,SAAS,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAQ,CACpE,CACG,CACF,CACP,CAAC,CAAC,CAAC,CACF,6BAAK,SAAS,EAAE,iBAAiB,mBAAmB,EAAE;gBACpD,8BACE,SAAS,EAAE,kDAAkD,qBAAqB,EAAE,IAEnF,wBAAwB,EAAE,aAAa,CACnC;gBACP,8BAAM,SAAS,EAAE,kCAAkC,qBAAqB,EAAE,IACvE,wBAAwB,EAAE,wBAAwB,CAC9C,CACH,CACP;YACD,6BAAK,SAAS,EAAC,4BAA4B;gBACzC,8BACE,SAAS,EAAC,uBAAuB,EACjC,QAAQ,EAAE,iBAAiB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;oBAE1D,oBAAC,SAAS,IACR,SAAS,EAAC,MAAM,EAChB,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,WAAW,EACnB,IAAI,EAAC,OAAO,EACZ,IAAI,EAAC,MAAM,EACX,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,iBACnC,6BAA6B,EACzC,IAAI,EAAE,WAAW,EACjB,SAAS,SACT;oBAEF,oBAAC,MAAM,IACL,IAAI,EAAC,QAAQ,iBACD,6BAA6B,EACzC,QAAQ,EAAE,iBAAiB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;wBAEnD,SAAS,IAAI,oBAAC,OAAO,IAAC,SAAS,EAAC,iCAAiC,GAAG;wBACpE,wBAAwB,EAAE,QAAQ,CAC5B,CACJ;gBACP,6BAAK,SAAS,EAAC,8BAA8B,GAAG;gBAChD,8BAAM,SAAS,EAAE,uBAAuB,qBAAqB,EAAE;oBAC5D,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,eAAe;oBACxC,4CACc,gBAAgB,EAC5B,SAAS,EAAC,8EAA8E,EACxF,OAAO,EAAE,GAAG,EAAE;4BACZ,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;wBAClE,CAAC,IAEA,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAC3B,CACD,CACH,CACF,CACP,CAAC;IACJ,CAAC,EAAE;QACD,cAAc,EAAE;QAChB,WAAW;QACX,YAAY;QACZ,SAAS;QACT,YAAY;QACZ,mBAAmB;QACnB,qBAAqB;KACtB,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,OAAO,CAC3B,GAAG,EAAE,CAAC,CACJ,4CAAiB,iCAAiC;QAChD,oBAAC,UAAU,IACT,SAAS,EAAC,MAAM,EAChB,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAE,GAAG,EAAE;gBACZ,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACjB,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAChE,CAAC,IAEA,UAAU,EAAE,IAAI,CACN;QACb,6BAAK,SAAS,EAAE,iBAAiB,mBAAmB,EAAE;YACpD,8BACE,SAAS,EAAE,+DAA+D,qBAAqB,EAAE,IAEhG,wBAAwB,EAAE,cAAc,CACpC;YACP,8BAAM,SAAS,EAAE,yCAAyC,qBAAqB,EAAE,IAC9E,wBAAwB,EAAE,oBAAoB,CAC1C,CACH,CACF,CACP,EACD;QACE,wBAAwB;QACxB,mBAAmB;QACnB,qBAAqB;QACrB,SAAS;QACT,UAAU;QACV,QAAQ;KACT,CACF,CAAC;IAEF,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE;QACnC,MAAM,EAAE,cAAc,EAAE,oBAAoB,EAAE,GAAG,YAAY,EAAE,CAAC;QAEhE,OAAO,CACL,4CAAiB,mCAAmC;YAClD,oBAAC,UAAU,IACT,SAAS,EAAC,MAAM,EAChB,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAE9B,UAAU,EAAE,IAAI,CACN;YAEZ,eAAe,IAAI,CAClB,6BAAK,SAAS,EAAC,sDAAsD;gBACnE,6BACE,GAAG,EAAE,cAAc,EACnB,GAAG,EAAC,OAAO,EACX,KAAK,EAAE,EAAE,GACT;gBACF,8BACE,SAAS,EAAE,+CAA+C,qBAAqB,EAAE,IAEhF,cAAc,CACV;gBACP,8BAAM,SAAS,EAAE,6BAA6B,qBAAqB,EAAE,IAClE,oBAAoB,CAChB;gBACN,QAAQ,EAAE,IAAI,IAAI,CACjB,8BACE,SAAS,EAAE,yBAAyB,qBAAqB,EAAE,IAC3D,GAAG,wBAAwB,EAAE,SAAS,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAQ,CACpE,CACG,CACP;YAED,6BAAK,SAAS,EAAE,wBAAwB,mBAAmB,EAAE;gBAC3D,8BACE,SAAS,EAAE,qDAAqD,qBAAqB,EAAE,IAEtF,wBAAwB,EAAE,gBAAgB,CACtC;gBACP,8BAAM,SAAS,EAAE,0CAA0C,qBAAqB,EAAE,IAC/E,wBAAwB,EAAE,sBAAsB,CAC5C;gBACP,8BACE,QAAQ,EAAE,oBAAoB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAChE,SAAS,EAAC,uBAAuB;oBAEjC,oBAAC,SAAS,IACR,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,cAAc,EACtB,IAAI,EAAC,UAAU,EACf,SAAS,QACT,IAAI,EAAE,cAAc,EACpB,WAAW,EAAE,wBAAwB,EAAE,aAAa,EACpD,KAAK,EAAE,wBAAwB,EAAE,aAAa,EAC9C,IAAI,EAAC,UAAU,iBACH,gCAAgC,EAC5C,QAAQ,EAAE,SAAS,GACnB;oBAEF,oBAAC,SAAS,IACR,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,cAAc,EACtB,IAAI,EAAC,iBAAiB,EACtB,WAAW,EAAE,wBAAwB,EAAE,oBAAoB,EAC3D,KAAK,EAAE,wBAAwB,EAAE,oBAAoB,EACrD,IAAI,EAAE,cAAc,EACpB,IAAI,EAAC,UAAU,iBACH,wCAAwC,EACpD,QAAQ,EAAE,SAAS,GACnB;oBAEF,oBAAC,SAAS,IACR,MAAM,EAAE,MAAM,EACd,SAAS,EAAC,sBAAsB,EAChC,cAAc,EAAE,iBAAiB,EAAE,EACnC,UAAU,EAAE,EAAE,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,GAC9C;oBAEF,oBAAC,MAAM,mBACO,+BAA+B,EAC3C,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,wBAAwB,IAAI,SAAS;wBAE9C,SAAS,IAAI,oBAAC,OAAO,IAAC,SAAS,EAAC,iCAAiC,GAAG;wBACpE,wBAAwB,EAAE,aAAa,CACjC,CACJ,CACH,CACF,CACP,CAAC;IACJ,CAAC,EAAE;QACD,wBAAwB;QACxB,eAAe;QACf,cAAc;QACd,iBAAiB,EAAE;QACnB,mBAAmB;QACnB,SAAS;QACT,YAAY;QACZ,mBAAmB;QACnB,qBAAqB;KACtB,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,OAAO,CACzB,GAAG,EAAE,CAAC,CACJ,4CACc,8BAA8B,EAC1C,SAAS,EAAE,iBAAiB,mBAAmB,EAAE;QAEjD,8BACE,SAAS,EAAE,gEAAgE,qBAAqB,EAAE,IAEjG,wBAAwB,EAAE,YAAY,CAClC;QACP,8BAAM,SAAS,EAAE,yCAAyC,qBAAqB,EAAE,IAC9E,wBAAwB,EAAE,kBAAkB,CACxC;QACP,oBAAC,MAAM,IACL,SAAS,EAAC,yCAAyC,EACnD,OAAO,EAAE,GAAG,EAAE;gBACZ,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACjB,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAChE,CAAC,iBACW,8BAA8B,IAEzC,wBAAwB,EAAE,WAAW,CAC/B,CACL,CACP,EACD,CAAC,wBAAwB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,QAAQ,CAAC,CACjF,CAAC;IAEF,OAAO,CACL,6BACE,SAAS,EAAE,oEAAoE,YAAY,EAAE,iBACjF,sBAAsB;QAEjC,OAAO,CAAC,CAAC,CAAC,CACT,6BAAK,SAAS,EAAC,eAAe;YAC5B,8BAAM,SAAS,EAAC,4DAA4D,gCAErE;YACP,6BAAK,SAAS,EAAC,wDAAwD;gBACrE,8BAAM,SAAS,EAAC,8CAA8C,IAC3D,UAAU,EAAE,IAAI,CAAC,SAAS,CACtB;gBACP,6BACE,GAAG,EAAE,cAAc,EACnB,GAAG,EAAC,YAAY,EAChB,KAAK,EAAC,IAAI,GACV,CACE,CACF,CACP,CAAC,CAAC,CAAC,CACF,6BACE,SAAS,EAAE,0DAA0D,mBAAmB,IAAI,sBAAsB,IAAI,EAAE,EAAE,IAEzH,SAAS,IAAI,CACZ,6BACE,GAAG,EAAE,cAAc,EACnB,GAAG,EAAC,YAAY,EAChB,KAAK,EAAE,GAAG,GACV,CACH,CACG,CACP;QACD,oBAAC,IAAI,IACH,SAAS,EAAE,OAAO,CAChB,+FAA+F,EAC/F,SAAS,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,EAAE,EACjD,eAAe,CAChB,EACD,KAAK,EAAE,gBAAgB,IAEtB,SAAS,CAAC,CAAC,CAAC,CACX,oBAAC,OAAO,IAAC,SAAS,EAAC,iDAAiD,GAAG,CACxE,CAAC,CAAC,CAAC,CACF;YACG,SAAS,CAAC,OAAO,CAAC,4BAA4B,CAAC,IAAI,cAAc;YACjE,SAAS,CAAC,OAAO,CAAC,gCAAgC,CAAC,IAAI,aAAa;YACpE,CAAC,SAAS,CAAC,OAAO,CAAC,mCAAmC,CAAC;gBACtD,SAAS,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;gBAC1D,eAAe;YAChB,SAAS,CAAC,OAAO,CAAC,qCAAqC,CAAC,IAAI,WAAW,CACvE,CACJ,CACI,CACH,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"ForgotPassword.js","sourceRoot":"","sources":["../../../src/auth/ForgotPassword.tsx"],"names":[],"mappings":"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"}
|
package/dist/mjs/auth/Login.js
CHANGED
|
@@ -3,7 +3,7 @@ import { useMsal } from '@azure/msal-react';
|
|
|
3
3
|
import { ArrowRightIcon, EnvelopeIcon, KeyIcon, LockClosedIcon } from '@heroicons/react/20/solid';
|
|
4
4
|
import { LockOpenIcon } from '@heroicons/react/24/outline';
|
|
5
5
|
import { yupResolver } from '@hookform/resolvers/yup';
|
|
6
|
-
import {
|
|
6
|
+
import { GoogleLogin } from '@react-oauth/google';
|
|
7
7
|
import { useActor } from '@xstate/react';
|
|
8
8
|
import { Button, Card, Spinner } from 'flowbite-react';
|
|
9
9
|
import React, { useEffect, useMemo, useRef, useState } from 'react';
|
|
@@ -12,11 +12,13 @@ import { twMerge } from 'tailwind-merge';
|
|
|
12
12
|
import * as yup from 'yup';
|
|
13
13
|
import { verifyEmptyValues } from '../helpers';
|
|
14
14
|
import useDictionary from '../hooks/useDictionary';
|
|
15
|
-
import { aloreLogoBlack, authErrorImage, fingerprint, fingerprintError,
|
|
15
|
+
import { aloreLogoBlack, authErrorImage, fingerprint, fingerprintError, metamaskLogo, microsoftLogo, walletConnectLogo, } from '../utils';
|
|
16
|
+
import { buildWalletExtensions, resolveWalletSecret } from '../utils/passkeyExtensions';
|
|
16
17
|
/* eslint-disable @next/next/no-img-element */
|
|
17
18
|
const InputForm = React.lazy(() => import('../components/InputForm'));
|
|
18
19
|
const InputOTP = React.lazy(() => import('../components/InputOTP'));
|
|
19
20
|
const BackButton = React.lazy(() => import('../components/BackButton'));
|
|
21
|
+
const LinkButton = React.lazy(() => import('../components/LinkButton'));
|
|
20
22
|
const envelopIcon = () => React.createElement(EnvelopeIcon, { className: "size-4 text-gray-500" });
|
|
21
23
|
const lockClosedIcon = () => React.createElement(LockClosedIcon, { className: "size-4 text-gray-500" });
|
|
22
24
|
const HARDWARE = 1;
|
|
@@ -33,7 +35,7 @@ const Login = ({ locale = 'pt', authServiceInstance, forgeId, logoImage, keyshar
|
|
|
33
35
|
// Single UI-facing error message derived from the error object
|
|
34
36
|
const displayError = errorObj?.message || '';
|
|
35
37
|
const hasDisplayError = !!displayError;
|
|
36
|
-
const { enablePasskeys, requireEmailVerification, enablePasswords, socialProviders } = authProviderConfigs || {};
|
|
38
|
+
const { enablePasskeys, requireEmailVerification, enablePasswords, socialProviders, enableWalletCreation, } = authProviderConfigs || {};
|
|
37
39
|
const [currentDevice, setCurrentDevice] = useState('');
|
|
38
40
|
const [loading, setLoading] = useState(false);
|
|
39
41
|
const [trustDevice, setTrustDevice] = useState(true);
|
|
@@ -48,29 +50,17 @@ const Login = ({ locale = 'pt', authServiceInstance, forgeId, logoImage, keyshar
|
|
|
48
50
|
const onlyPasskeyLogin = useMemo(() => {
|
|
49
51
|
return enablePasskeys && !enablePasswords;
|
|
50
52
|
}, [enablePasskeys, enablePasswords]);
|
|
51
|
-
const googleLogin = useGoogleLogin({
|
|
52
|
-
onSuccess: (tokenResponse) => {
|
|
53
|
-
resetEmail();
|
|
54
|
-
sendAuth({
|
|
55
|
-
type: 'GOOGLE_LOGIN',
|
|
56
|
-
payload: {
|
|
57
|
-
accessToken: tokenResponse.access_token,
|
|
58
|
-
providerName: 'google',
|
|
59
|
-
},
|
|
60
|
-
});
|
|
61
|
-
},
|
|
62
|
-
});
|
|
63
53
|
const microsoftLogin = () => {
|
|
64
54
|
instance
|
|
65
55
|
.loginPopup({
|
|
66
56
|
scopes: ['user.read'],
|
|
67
57
|
})
|
|
68
58
|
.then((response) => {
|
|
69
|
-
|
|
59
|
+
resetEmail();
|
|
70
60
|
sendAuth({
|
|
71
|
-
type: '
|
|
61
|
+
type: 'SOCIAL_LOGIN',
|
|
72
62
|
payload: {
|
|
73
|
-
|
|
63
|
+
idToken: response.idToken,
|
|
74
64
|
providerName: 'microsoft',
|
|
75
65
|
},
|
|
76
66
|
});
|
|
@@ -79,8 +69,19 @@ const Login = ({ locale = 'pt', authServiceInstance, forgeId, logoImage, keyshar
|
|
|
79
69
|
console.error('Login failed:', error);
|
|
80
70
|
});
|
|
81
71
|
};
|
|
82
|
-
const handleGoogleLogin = () => googleLogin();
|
|
83
72
|
const handleMicrosoftLogin = () => microsoftLogin();
|
|
73
|
+
const handleGoogleCredential = (credentialResponse) => {
|
|
74
|
+
if (!credentialResponse.credential)
|
|
75
|
+
return;
|
|
76
|
+
resetEmail();
|
|
77
|
+
sendAuth({
|
|
78
|
+
type: 'SOCIAL_LOGIN',
|
|
79
|
+
payload: {
|
|
80
|
+
idToken: credentialResponse.credential,
|
|
81
|
+
providerName: 'google',
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
};
|
|
84
85
|
const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
|
|
85
86
|
const hasPasskeySupportWithPRFOrLargeBlob = () => {
|
|
86
87
|
if (window.PublicKeyCredential &&
|
|
@@ -115,24 +116,12 @@ const Login = ({ locale = 'pt', authServiceInstance, forgeId, logoImage, keyshar
|
|
|
115
116
|
// eslint-disable-next-line no-undef
|
|
116
117
|
const sendSignedCredential = async (credential) => {
|
|
117
118
|
const extensionResults = credential.getClientExtensionResults();
|
|
118
|
-
|
|
119
|
-
//
|
|
120
|
-
const
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
if (
|
|
124
|
-
// @ts-ignore
|
|
125
|
-
secretFromCredential = extensionResults?.prf?.results?.first;
|
|
126
|
-
}
|
|
127
|
-
else if (hasLargeBlob) {
|
|
128
|
-
// @ts-ignore
|
|
129
|
-
secretFromCredential = extensionResults?.largeBlob?.blob;
|
|
130
|
-
}
|
|
131
|
-
if (hasLargeBlob && isSafari) {
|
|
132
|
-
// @ts-ignore
|
|
133
|
-
secretFromCredential = extensionResults?.largeBlob?.blob;
|
|
134
|
-
}
|
|
135
|
-
if (!secretFromCredential) {
|
|
119
|
+
// JOO-1792: with wallets disabled no secret is required (none was requested);
|
|
120
|
+
// with wallets enabled the previous PRF/largeBlob/Safari semantics are preserved.
|
|
121
|
+
const { supported: walletSecretSupported, secret: secretFromCredential } = resolveWalletSecret(!!enableWalletCreation, extensionResults, {
|
|
122
|
+
isSafari,
|
|
123
|
+
});
|
|
124
|
+
if (!walletSecretSupported) {
|
|
136
125
|
sendAuth({
|
|
137
126
|
type: 'PASSKEY_NOT_SUPPORTED',
|
|
138
127
|
payload: { error: loginDictionary?.passkeyNotSupported },
|
|
@@ -161,7 +150,7 @@ const Login = ({ locale = 'pt', authServiceInstance, forgeId, logoImage, keyshar
|
|
|
161
150
|
},
|
|
162
151
|
},
|
|
163
152
|
});
|
|
164
|
-
if (keyshareWorker) {
|
|
153
|
+
if (keyshareWorker && secretFromCredential) {
|
|
165
154
|
keyshareWorker.postMessage({
|
|
166
155
|
method: 'derive-password',
|
|
167
156
|
payload: {
|
|
@@ -178,12 +167,7 @@ const Login = ({ locale = 'pt', authServiceInstance, forgeId, logoImage, keyshar
|
|
|
178
167
|
}
|
|
179
168
|
cancelConditionalCredentialRequest();
|
|
180
169
|
const { publicKey } = RCRPublicKey;
|
|
181
|
-
const extensions =
|
|
182
|
-
prf: { eval: { first: new TextEncoder().encode('Alore') } },
|
|
183
|
-
largeBlob: {
|
|
184
|
-
read: true,
|
|
185
|
-
},
|
|
186
|
-
};
|
|
170
|
+
const extensions = buildWalletExtensions('login', !!enableWalletCreation);
|
|
187
171
|
// eslint-disable-next-line no-undef
|
|
188
172
|
const credentialOptions = {
|
|
189
173
|
publicKey: {
|
|
@@ -264,6 +248,7 @@ const Login = ({ locale = 'pt', authServiceInstance, forgeId, logoImage, keyshar
|
|
|
264
248
|
authState.matches('active.login.verifyingEmail2fa') ||
|
|
265
249
|
authState.matches('active.login.resendingEmailCode') ||
|
|
266
250
|
authState.matches('active.login.googleLogin') ||
|
|
251
|
+
authState.matches('active.login.socialLogin') ||
|
|
267
252
|
authState.matches('active.login.verifyingGoogleLogin') ||
|
|
268
253
|
authState.matches('active.login.verifyingRegisterPublicKeyCredential') ||
|
|
269
254
|
authState.matches('active.login.retrievingCredentialRCR') ||
|
|
@@ -287,6 +272,25 @@ const Login = ({ locale = 'pt', authServiceInstance, forgeId, logoImage, keyshar
|
|
|
287
272
|
window.removeEventListener('keydown', handleMethodSelectionEnter);
|
|
288
273
|
};
|
|
289
274
|
}, [authState.value, isLoading, selectLoginMethod]);
|
|
275
|
+
const canGoBack = useMemo(() => authState.matches('active.login.loginMethodSelection') ||
|
|
276
|
+
authState.matches('active.login.inputPassword') ||
|
|
277
|
+
authState.matches('active.login.email2fa') ||
|
|
278
|
+
authState.matches('active.login.hardware2fa') ||
|
|
279
|
+
authState.matches('active.login.software2fa'), [authState.value]);
|
|
280
|
+
useEffect(() => {
|
|
281
|
+
if (typeof window === 'undefined')
|
|
282
|
+
return undefined;
|
|
283
|
+
const handleEscape = (event) => {
|
|
284
|
+
if (event.key === 'Escape' && canGoBack && !isLoading) {
|
|
285
|
+
event.preventDefault();
|
|
286
|
+
sendAuth('BACK');
|
|
287
|
+
}
|
|
288
|
+
};
|
|
289
|
+
window.addEventListener('keydown', handleEscape);
|
|
290
|
+
return () => {
|
|
291
|
+
window.removeEventListener('keydown', handleEscape);
|
|
292
|
+
};
|
|
293
|
+
}, [canGoBack, isLoading, sendAuth]);
|
|
290
294
|
useEffect(() => {
|
|
291
295
|
if (typeof window !== 'undefined') {
|
|
292
296
|
hasPasskeySupportWithPRFOrLargeBlob();
|
|
@@ -612,13 +616,14 @@ const Login = ({ locale = 'pt', authServiceInstance, forgeId, logoImage, keyshar
|
|
|
612
616
|
displayError?.includes('beta') ? (React.createElement("span", { className: "font-poppins text-alr-red text-center text-xl font-bold" }, displayError)) : (React.createElement(React.Fragment, null,
|
|
613
617
|
React.createElement("span", { className: "font-poppins text-alr-red text-center text-xl font-bold" }, authErrorTitle),
|
|
614
618
|
React.createElement("span", { className: "text-alr-grey text-center font-medium" }, authErrorDescription),
|
|
615
|
-
errorObj?.code && (React.createElement("span", { className: "mt-1 text-center text-xs text-gray-500" }, `${loginDictionary?.errorCode} ${errorObj.code}`)))))) : (React.createElement("h1", { className: loginTitleClassName ||
|
|
619
|
+
errorObj?.code && (React.createElement("span", { className: "mt-1 text-center text-xs text-gray-500" }, `${loginDictionary?.errorCode} ${errorObj.code}`)))))) : (React.createElement("h1", { className: loginTitleClassName ||
|
|
620
|
+
`font-inter text-xl font-bold text-gray-700 ${getTextAlignment}` }, loginTitle || (forgeId ? loginDictionary?.forgeLogin : loginDictionary?.loginAccount))),
|
|
616
621
|
React.createElement("div", { className: "mt-4 flex flex-col gap-y-5" },
|
|
617
622
|
!onlyPasskeyLogin && requireEmailVerification && (React.createElement("form", { className: "flex flex-col gap-y-5", onSubmit: handleSubmitEmail((data) => onSubmitEmail(data)) },
|
|
618
|
-
React.createElement(InputForm, {
|
|
623
|
+
React.createElement(InputForm, { inputClassName: inputClassName, control: emailControl, errors: emailErrors, name: "email", type: "text", placeholder: emailInputLabel || loginDictionary?.enterEmail, "data-testid": "login-email-input", icon: envelopIcon, autoComplete: authAbortController && isConditionalMediationAvailable
|
|
619
624
|
? 'username webauthn'
|
|
620
625
|
: undefined, autoFocus: true }),
|
|
621
|
-
React.createElement("
|
|
626
|
+
React.createElement(LinkButton, { "data-testid": "forgot-password-link", onClick: () => sendAuth('FORGOT_PASSWORD'), className: "text-xs" }, loginDictionary?.forgotPassword),
|
|
622
627
|
React.createElement(Button, { type: "submit", "data-testid": "login-button", disabled: verifyEmptyValues(getValuesEmail('email')) },
|
|
623
628
|
isLoading && React.createElement(Spinner, { className: "mr-3 !h-5 w-full !fill-gray-300" }),
|
|
624
629
|
onlyPasskeyLogin ? loginDictionary?.passkeyLogin : loginDictionary?.login))),
|
|
@@ -628,12 +633,17 @@ const Login = ({ locale = 'pt', authServiceInstance, forgeId, logoImage, keyshar
|
|
|
628
633
|
React.createElement("span", { className: "font-semibold text-white" }, loginDictionary?.passkeyLogin)))),
|
|
629
634
|
React.createElement("div", { className: "h-[0.5px] w-full bg-gray-300" }),
|
|
630
635
|
socialProviders?.length && (React.createElement(React.Fragment, null,
|
|
631
|
-
React.createElement("div", { className: "flex w-full flex-row gap-4" }, socialProviders.map((provider) =>
|
|
636
|
+
React.createElement("div", { className: "flex w-full flex-row gap-4" }, socialProviders.map((provider) => provider.providerName === 'google' ? (
|
|
637
|
+
// Google's own button, because the credential it returns IS
|
|
638
|
+
// the id_token. The custom button below cannot produce one:
|
|
639
|
+
// useGoogleLogin yields an access_token, whose audience the
|
|
640
|
+
// backend has no way to verify. Styling is limited to what
|
|
641
|
+
// Google exposes here.
|
|
642
|
+
React.createElement("div", { key: provider.id, className: "w-full", "data-testid": "login-social-google-button" },
|
|
643
|
+
React.createElement(GoogleLogin, { onSuccess: handleGoogleCredential, onError: () => console.error('Google sign-in failed'), shape: "rectangular", size: "large", width: "100%", text: "continue_with", locale: locale }))) : (React.createElement(Button, { key: provider.id, color: "light", "data-testid": `login-social-${provider.providerName}-button`, className: "w-full", onClick: handleMicrosoftLogin, outline: true },
|
|
632
644
|
React.createElement("div", { className: "flex flex-row items-center justify-center gap-2" },
|
|
633
|
-
React.createElement("img", { src:
|
|
634
|
-
|
|
635
|
-
? dictionary?.auth.continueGoogle
|
|
636
|
-
: dictionary?.auth.continueMicrosoft))))),
|
|
645
|
+
React.createElement("img", { src: microsoftLogo, alt: "microsoft logo", width: 16 }),
|
|
646
|
+
dictionary?.auth.continueMicrosoft))))),
|
|
637
647
|
React.createElement("div", { className: "h-[0.5px] w-full bg-gray-300" }))),
|
|
638
648
|
forgeId && (React.createElement(Button, { color: "light", onClick: () => sendAuth('LOGIN_WITH_WEB3CONNECTOR'), outline: true },
|
|
639
649
|
React.createElement("div", { className: "flex flex-row items-center justify-center gap-2" },
|
|
@@ -641,9 +651,9 @@ const Login = ({ locale = 'pt', authServiceInstance, forgeId, logoImage, keyshar
|
|
|
641
651
|
React.createElement("img", { src: metamaskLogo, alt: "metamask logo", width: 20, className: "absolute right-3" }),
|
|
642
652
|
React.createElement("img", { src: walletConnectLogo, alt: "walletconnect logo", width: 20 })),
|
|
643
653
|
loginDictionary?.metamaskWalletConnect))),
|
|
644
|
-
React.createElement("
|
|
645
|
-
loginDictionary?.dontHaveAccount,
|
|
646
|
-
React.createElement(
|
|
654
|
+
React.createElement("div", { className: "flex flex-col items-center gap-0.5 text-center text-sm font-medium" },
|
|
655
|
+
React.createElement("span", null, loginDictionary?.dontHaveAccount),
|
|
656
|
+
React.createElement(LinkButton, { "data-testid": "sign-up-button", className: "text-sm", onClick: () => {
|
|
647
657
|
sendAuth(['RESET', { type: 'INITIALIZE', forgeId }, 'SIGN_UP']);
|
|
648
658
|
} }, loginDictionary?.signUp)))));
|
|
649
659
|
}, [
|
|
@@ -666,12 +676,13 @@ const Login = ({ locale = 'pt', authServiceInstance, forgeId, logoImage, keyshar
|
|
|
666
676
|
handleSubmitEmail,
|
|
667
677
|
onSubmitEmail,
|
|
668
678
|
handlePasskeyButton,
|
|
669
|
-
|
|
679
|
+
handleGoogleCredential,
|
|
670
680
|
handleMicrosoftLogin,
|
|
671
681
|
onlyPasskeyLogin,
|
|
672
682
|
requireEmailVerification,
|
|
673
683
|
errorObj,
|
|
674
684
|
hasDisplayError,
|
|
685
|
+
getTextAlignment,
|
|
675
686
|
]);
|
|
676
687
|
const SelectLoginMethod = useMemo(() => {
|
|
677
688
|
const { authErrorTitle, authErrorDescription } = getAuthError();
|
|
@@ -725,14 +736,14 @@ const Login = ({ locale = 'pt', authServiceInstance, forgeId, logoImage, keyshar
|
|
|
725
736
|
React.createElement("span", { className: "text-alr-grey text-center font-medium" }, authErrorDescription),
|
|
726
737
|
errorObj?.code && (React.createElement("span", { className: "text-center text-xs text-gray-500" }, `${loginDictionary?.errorCode} ${errorObj.code}`))))),
|
|
727
738
|
React.createElement("form", { onSubmit: handleSubmitPassword((data) => onSubmitLogin(data)), className: "flex flex-col gap-y-5", "data-testid": "login-password-step" },
|
|
728
|
-
React.createElement(InputForm, { inputClassName: inputClassName, control: passwordControl, errors: passwordErrors, name: "password", placeholder: loginDictionary?.enterPassword, icon: lockClosedIcon, type: "password", label: dictionary?.password, "data-testid": "login-password" }),
|
|
729
|
-
React.createElement("
|
|
739
|
+
React.createElement(InputForm, { inputClassName: inputClassName, control: passwordControl, errors: passwordErrors, name: "password", placeholder: loginDictionary?.enterPassword, icon: lockClosedIcon, type: "password", label: dictionary?.password, passwordToggleLabel: dictionary?.auth.togglePasswordVisibility, "data-testid": "login-password" }),
|
|
740
|
+
React.createElement(LinkButton, { "data-testid": "forgot-password-link", onClick: () => sendAuth('FORGOT_PASSWORD'), className: "text-xs" }, loginDictionary?.forgotPassword),
|
|
730
741
|
React.createElement(Button, { type: "submit", "data-testid": "login-submit", disabled: isLoginSubmitDisabled },
|
|
731
742
|
isLoading && React.createElement(Spinner, { className: "mr-3 !h-5 w-full !fill-gray-300" }),
|
|
732
743
|
loginDictionary?.login),
|
|
733
|
-
React.createElement("
|
|
734
|
-
loginDictionary?.dontHaveAccount,
|
|
735
|
-
React.createElement(
|
|
744
|
+
React.createElement("div", { className: "flex flex-col items-center gap-0.5 text-center text-sm font-medium" },
|
|
745
|
+
React.createElement("span", null, loginDictionary?.dontHaveAccount),
|
|
746
|
+
React.createElement(LinkButton, { "data-testid": "sign-up-button", className: "text-sm", onClick: () => {
|
|
736
747
|
sendAuth(['RESET', { type: 'INITIALIZE', forgeId }, 'SIGN_UP']);
|
|
737
748
|
} }, loginDictionary?.signUp)))));
|
|
738
749
|
}, [
|
|
@@ -754,6 +765,7 @@ const Login = ({ locale = 'pt', authServiceInstance, forgeId, logoImage, keyshar
|
|
|
754
765
|
onSubmitLogin,
|
|
755
766
|
forgeId,
|
|
756
767
|
isLoginSubmitDisabled,
|
|
768
|
+
getTextAlignment,
|
|
757
769
|
]);
|
|
758
770
|
const VerifyEmail = useMemo(() => (React.createElement("div", { "data-testid": "login-verify-email-step" },
|
|
759
771
|
React.createElement(BackButton, { className: "mb-4", disabled: isLoading, onClick: () => sendAuth('BACK') }, dictionary?.back),
|
|
@@ -768,9 +780,7 @@ const Login = ({ locale = 'pt', authServiceInstance, forgeId, logoImage, keyshar
|
|
|
768
780
|
React.createElement(Button, { "data-testid": "secure-code-submit", onClick: () => onClickSecureCodeSubmit(), className: "group relative mb-6 flex w-full items-center justify-center rounded-lg border border-transparent bg-[--primary-color] p-0.5 text-center font-medium text-white duration-300 hover:bg-[--primary-hover] focus:z-10 focus:outline-none focus:ring-2 focus:ring-red-300 enabled:hover:bg-red-700 disabled:hover:bg-red-900 dark:bg-red-600 dark:hover:bg-red-700 dark:focus:ring-red-900 dark:enabled:hover:bg-red-700 dark:disabled:hover:bg-red-600", disabled: secureCode2FA.length !== 6 || isLoading },
|
|
769
781
|
isLoading && React.createElement(Spinner, { className: "mr-3 !h-5 w-full !fill-gray-300" }),
|
|
770
782
|
loginDictionary?.confirmCode),
|
|
771
|
-
React.createElement("
|
|
772
|
-
? 'pointer-events-none opacity-50'
|
|
773
|
-
: 'cursor-pointer opacity-100 hover:text-[--primary-hover]') }, `${loginDictionary?.resendCode}${sendEmailCooldown ? ` (${sendEmailCooldown}s)` : ''}`)))), [
|
|
783
|
+
React.createElement(LinkButton, { "data-testid": "resend-code-button", onClick: () => resendSecureCode(), disabled: sendEmailCooldown > 0, className: twMerge(`text-base`, sendEmailCooldown > 0 ? 'opacity-50' : 'opacity-100') }, `${loginDictionary?.resendCode}${sendEmailCooldown ? ` (${sendEmailCooldown}s)` : ''}`)))), [
|
|
774
784
|
secureCode2FA,
|
|
775
785
|
sendEmailCooldown,
|
|
776
786
|
isLoading,
|
|
@@ -793,16 +803,16 @@ const Login = ({ locale = 'pt', authServiceInstance, forgeId, logoImage, keyshar
|
|
|
793
803
|
React.createElement(Button, { className: "bg-alr-red hover:bg-alr-dark-red group relative flex w-full items-center justify-center rounded-lg border border-transparent p-0.5 text-center font-medium text-white duration-300 focus:z-10 focus:outline-none focus:ring-2 focus:ring-red-300 enabled:hover:bg-red-700 disabled:hover:bg-red-900 dark:bg-red-600 dark:hover:bg-red-700 dark:focus:ring-red-900 dark:enabled:hover:bg-red-700 dark:disabled:hover:bg-red-600", onClick: () => startHwAuth(0) }, loginDictionary?.tryAgain),
|
|
794
804
|
activeHw2fa?.length > 1 && (React.createElement(React.Fragment, null,
|
|
795
805
|
React.createElement("span", null, loginDictionary?.tryHardware),
|
|
796
|
-
React.createElement(
|
|
806
|
+
React.createElement(LinkButton, { "data-testid": "use-another-hardware-button", className: "flex items-center gap-x-1 text-base font-semibold", onClick: () => startHwAuth(1) },
|
|
797
807
|
loginDictionary?.useAnotherHardware,
|
|
798
808
|
React.createElement(ArrowRightIcon, { className: "size-5" })))),
|
|
799
|
-
activeSw2fa && (React.createElement(
|
|
809
|
+
activeSw2fa && (React.createElement(LinkButton, { "data-testid": "use-software-2fa-button", className: "flex items-center gap-x-1 text-base font-semibold", onClick: () => sendAuth('USE_SOFTWARE_2FA') },
|
|
800
810
|
loginDictionary?.useSw2fa,
|
|
801
811
|
React.createElement(ArrowRightIcon, { className: "size-5" }))))) : (React.createElement("div", { className: `flex w-full flex-col ${getAlignmentClasses}` },
|
|
802
812
|
React.createElement("span", { className: `font-poppins text-alr-grey mb-10 mt-12 text-[1.3rem] font-bold ${getTextAlignment}` }, loginDictionary?.touchHardware),
|
|
803
813
|
React.createElement("span", { className: `text-alr-grey mb-10 w-60 text-sm font-normal ${getTextAlignment}` }, loginDictionary?.touchHardwareDescription),
|
|
804
814
|
React.createElement("img", { alt: "usb indicator", src: fingerprint }),
|
|
805
|
-
activeSw2fa && (React.createElement(
|
|
815
|
+
activeSw2fa && (React.createElement(LinkButton, { "data-testid": "use-software-2fa-button", className: "mt-9 flex items-center gap-x-1 text-base font-semibold", onClick: () => sendAuth('USE_SOFTWARE_2FA') },
|
|
806
816
|
loginDictionary?.useSw2fa,
|
|
807
817
|
React.createElement(ArrowRightIcon, { className: "size-5" }))))))), [
|
|
808
818
|
isLoading,
|
|
@@ -825,7 +835,7 @@ const Login = ({ locale = 'pt', authServiceInstance, forgeId, logoImage, keyshar
|
|
|
825
835
|
React.createElement(Button, { "data-testid": "secure-code-2FA-submit", onClick: () => onSubmitSecureCode2FA(), className: "bg-alr-red hover:bg-alr-dark-red group relative mb-6 flex w-full items-center justify-center rounded-lg border border-transparent p-0.5 text-center font-medium text-white duration-300 focus:z-10 focus:outline-none focus:ring-2 focus:ring-red-300 enabled:hover:bg-red-700 disabled:hover:bg-red-900 dark:bg-red-600 dark:hover:bg-red-700 dark:focus:ring-red-900 dark:enabled:hover:bg-red-700 dark:disabled:hover:bg-red-600", disabled: secureCode2FA.length !== 6 },
|
|
826
836
|
isLoading && React.createElement(Spinner, { className: "mr-3 !h-5 w-full !fill-gray-300" }),
|
|
827
837
|
loginDictionary?.confirmCode),
|
|
828
|
-
active2fa?.find((item) => item.twoFaTypeId === HARDWARE) && (React.createElement(
|
|
838
|
+
active2fa?.find((item) => item.twoFaTypeId === HARDWARE) && (React.createElement(LinkButton, { "data-testid": "use-hardware-2fa-button", className: "mt-9 flex items-center gap-x-1 text-base font-semibold", onClick: () => sendAuth('USE_HARDWARE_2FA') },
|
|
829
839
|
loginDictionary?.useHw2fa,
|
|
830
840
|
React.createElement(ArrowRightIcon, { className: "size-5" })))))), [
|
|
831
841
|
secureCode2FA,
|
|
@@ -850,9 +860,7 @@ const Login = ({ locale = 'pt', authServiceInstance, forgeId, logoImage, keyshar
|
|
|
850
860
|
React.createElement(Button, { "data-testid": "secure-code-email-submit", onClick: () => onSubmitSecureCodeEmail(), className: "bg-alr-red hover:bg-alr-dark-red group relative mb-6 flex w-full items-center justify-center rounded-lg border border-transparent p-0.5 text-center font-medium text-white duration-300 focus:z-10 focus:outline-none focus:ring-2 focus:ring-red-300 enabled:hover:bg-red-700 disabled:hover:bg-red-900 dark:bg-red-600 dark:hover:bg-red-700 dark:focus:ring-red-900 dark:enabled:hover:bg-red-700 dark:disabled:hover:bg-red-600", disabled: secureCodeEmail.length !== 6 },
|
|
851
861
|
isLoading && React.createElement(Spinner, { className: "mr-3 !h-5 w-full !fill-gray-300" }),
|
|
852
862
|
loginDictionary?.confirmCode),
|
|
853
|
-
React.createElement("
|
|
854
|
-
? 'pointer-events-none opacity-50'
|
|
855
|
-
: 'hover:text-alr-red cursor-pointer opacity-100') }, `${loginDictionary?.resendCode}${sendEmailCooldown ? ` (${sendEmailCooldown}s)` : ''}`)))), [
|
|
863
|
+
React.createElement(LinkButton, { "data-testid": "resend-code-button", onClick: () => resendSecureCode(), disabled: sendEmailCooldown > 0, className: twMerge(`text-base`, sendEmailCooldown > 0 ? 'opacity-50' : 'opacity-100') }, `${loginDictionary?.resendCode}${sendEmailCooldown ? ` (${sendEmailCooldown}s)` : ''}`)))), [
|
|
856
864
|
secureCodeEmail,
|
|
857
865
|
sendEmailCooldown,
|
|
858
866
|
isLoading,
|