{"version":3,"file":"Multifactor-BFF4n33l.js","sources":["../../users/components/NotificationContainer.jsx","../../users/components/Multifactor.jsx"],"sourcesContent":["import React from 'react'\r\n\r\nfunction NotificationContainer({ confirmationMessage = \"\", setConfirmationMessage, errorMessage = \"\", setErrorMessage }) {\r\n return (\r\n
\r\n {errorMessage &&
\r\n
\r\n \r\n \r\n \r\n {errorMessage}\r\n \r\n
\r\n
}\r\n {confirmationMessage &&
\r\n
\r\n \r\n \r\n \r\n {confirmationMessage}\r\n \r\n
\r\n
}\r\n
\r\n );\r\n}\r\n\r\nexport default NotificationContainer;","import { useState } from 'react';\r\nimport { api } from \"#shared/ApiClient\";\r\n\r\n/**\r\n * @import {MultifactorMode, MultifactorProps, MultifactorSignInViewModel, VerifyMultifactorResponseModel} from \"./UserModels\"\r\n */\r\n\r\nfunction Multifactor(/** @type {MultifactorProps} */{\r\n authAppEnabled,\r\n maskedPhoneNumber,\r\n setConfirmationMessage,\r\n setErrorMessage,\r\n onRequestEmailPassword,\r\n handleFormSubmit = HandleAuthCodeSubmit,\r\n enableRecovery = true,\r\n handleCancel = undefined,\r\n}) {\r\n const smsEnabled = !!maskedPhoneNumber;\r\n\r\n const [selectedMethod, setSelectedMethod] = useState(/** @type {MultifactorMode}*/(authAppEnabled ? 'app' : (smsEnabled ? 'sms' : 'recovery')));\r\n const [smsConfirmationChecked, setSmsConfirmationChecked] = useState(false);\r\n const [smsSendCodeDisabled, setSmsSendCodeDisabled] = useState(true);\r\n const [submitCodeDisabled, setSubmitCodeDisabled] = useState(false);\r\n\r\n const [authAppVerificationCode, setAuthAppVerificationCode] = useState('');\r\n const [smsVerificationCode, setSmsVerificationCode] = useState('');\r\n const [recoveryCode, setRecoveryCode] = useState('');\r\n\r\n /**\r\n * \r\n * @param {Event} event \r\n */\r\n const handleSubmit = async (event) => {\r\n event.preventDefault();\r\n setSubmitCodeDisabled(true);\r\n\r\n const /** @type {Partial} */ data = {\r\n SmsVerificationCode: smsVerificationCode,\r\n AuthAppVerificationCode: authAppVerificationCode,\r\n RecoveryCode: recoveryCode\r\n };\r\n\r\n let result = await handleFormSubmit(data);\r\n\r\n setConfirmationMessage(result.ConfirmationMessage);\r\n setErrorMessage(result.ErrorMessage);\r\n\r\n if (result.ErrorMessage) {\r\n setSubmitCodeDisabled(false);\r\n }\r\n\r\n if (result.MultifactorReset) {\r\n setSubmitCodeDisabled(false);\r\n onRequestEmailPassword();\r\n }\r\n };\r\n\r\n\r\n /**\r\n * Handles the click of the cancel button if it is visible\r\n * \r\n * @param {React.MouseEvent} event \r\n * @returns {void}\r\n */\r\n const handleCancelClick = (event) => {\r\n event.preventDefault();\r\n handleCancel?.();\r\n }\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n\r\n {authAppEnabled &&\r\n
\r\n setSelectedMethod('app')} checked={selectedMethod === 'app'} />\r\n \r\n {selectedMethod === 'app' && setAuthAppVerificationCode(e.target.value)} autoComplete=\"off\" autoFocus={selectedMethod === 'app'} className=\"form-control\" id=\"appInput\" name=\"AuthAppVerificationCode\" placeholder=\"Enter your verification code\" required style={{ display: \"block\", marginTop: \"20px\", width: \"250px\" }} type=\"text\" />}\r\n
}\r\n\r\n {smsEnabled &&\r\n
\r\n setSelectedMethod('sms')} checked={selectedMethod === 'sms'} />\r\n \r\n {selectedMethod === 'sms' && <>\r\n
\r\n
Request Verification Code
\r\n
\r\n

A verification code will be sent to {maskedPhoneNumber} that will expire after 5 minutes.

\r\n
\r\n { setSmsConfirmationChecked(e.target.checked); setSmsSendCodeDisabled(!e.target.checked); }} style={{ marginRight: \"10px\" }} />\r\n \r\n
\r\n SendSmsCode(() => { setSmsConfirmationChecked(false); setSmsSendCodeDisabled(true) }, setConfirmationMessage, setErrorMessage) : undefined} />\r\n
\r\n
\r\n setSmsVerificationCode(e.target.value)} autoComplete=\"off\" className=\"form-control\" id=\"smsInput\" name=\"SmsVerificationCode\" placeholder=\"Enter your verification code\" style={{ display: \"block\", marginTop: \"20px\", width: \"250px\", marginLeft: \"inherit\" }} type=\"text\" />\r\n
\r\n }\r\n
}\r\n\r\n {enableRecovery &&\r\n
\r\n
\r\n setSelectedMethod('recovery')} checked={selectedMethod === 'recovery'} />\r\n
\r\n \r\n {selectedMethod === 'recovery' && <>\r\n
\r\n Note: Using recovery code will remove MFA from your account and log you out. To regain access to your account, you will need to log back in and follow the steps to re-enroll in MFA.\r\n
\r\n setRecoveryCode(e.target.value)} autoComplete=\"off\" autoFocus={selectedMethod === 'recovery'} className=\"form-control\" id=\"rcInput\" name=\"RecoveryCode\" placeholder=\"Enter your recovery code\" style={{ display: \"block\", marginTop: \"20px\", width: \"250px\" }} type=\"text\" />\r\n }\r\n
\r\n }\r\n\r\n
\r\n
\r\n {handleCancel && }\r\n \r\n
\r\n \r\n );\r\n}\r\n\r\n/**\r\n * Send an SMS code\r\n * \r\n * @param {()=>void} onComplete \r\n * @param {(param0:string)=>void} setConfirmationMessage \r\n * @param {(param0:string)=>void} setErrorMessage \r\n */\r\nasync function SendSmsCode(onComplete, setConfirmationMessage, setErrorMessage) {\r\n let result = await api.post('SignIn/TextMultifactorSendCode', {});\r\n setConfirmationMessage(result.ConfirmationMessage);\r\n setErrorMessage(result.ErrorMessage);\r\n onComplete();\r\n}\r\n\r\n/**\r\n * \r\n * @param {MultifactorSignInViewModel} data \r\n * @returns {Promise}\r\n */\r\nconst HandleAuthCodeSubmit = async (data) => {\r\n const /** @type {VerifyMultifactorResponseModel} */ result = await api.post('SignIn/MultifactorCode', data);\r\n\r\n if (result.Authenticated) {\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const redirectUrl = urlParams.get('ReturnUrl');\r\n const destination = redirectUrl != null ? redirectUrl : 'Transactions'\r\n window.location.href = destination;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport default Multifactor;"],"names":["NotificationContainer","confirmationMessage","setConfirmationMessage","errorMessage","setErrorMessage","jsxs","jsx","Multifactor","authAppEnabled","maskedPhoneNumber","onRequestEmailPassword","handleFormSubmit","HandleAuthCodeSubmit","enableRecovery","handleCancel","smsEnabled","selectedMethod","setSelectedMethod","useState","smsConfirmationChecked","setSmsConfirmationChecked","smsSendCodeDisabled","setSmsSendCodeDisabled","submitCodeDisabled","setSubmitCodeDisabled","authAppVerificationCode","setAuthAppVerificationCode","smsVerificationCode","setSmsVerificationCode","recoveryCode","setRecoveryCode","handleSubmit","event","result","handleCancelClick","Fragment","e","SendSmsCode","onComplete","api","data","redirectUrl","destination"],"mappings":"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"}