{"version":3,"file":"166.c0ee42fc8d345ef2.js","mappings":"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","names":["component","RevealPasswordController","$scope","$element","BdLocalize","vm","this","isShowingPassword","showPasswordText","hidePasswordText","isPasswordManagerIconVisible","isRevealEnabled","togglePassword","input","attr","$postLink","find","getString","observer","MutationObserver","style","backgroundImage","disconnect","$safeApply","observe","attributes","childList","characterData","$on","template","templateHtml","bindings","controllerAs","transclude","$inject","controller","RevealPasswordComponent","twoFactorAuthenticationConfiguration","showRememberDevice","onVerifyCode","onAlternativeOptionSelected","useSingleTextBox","onRedirectWhenTokenExpired","isTwilioServiceEnabled","isSmsServiceEnabled","isVoiceServiceEnabled","isVerifyApiServiceEnabled","isSmsVoiceServiceEnabled","AuthenticationMethod","AuthApp","Voice","SMS","VerifyTwoFactorAuthenticationController","$window","RedirectToLoginService","ALERT_TYPE","AuthenticationMethods","enterCodeDescriptionText","showVerificationModal","showHavingTroubleModal","showHavingTroubleLink","isCodeExpiredOrIncorrect","isCodeExpired","codeNotEntered","isTooManyAttempts","twoFactorAuthenticationOptions","rememberMyDevice","twoFactorUserSettings","AuthAppVerificationCode","isAllPhoneServicesDown","isSmsServiceDown","isVoiceServiceDown","showSmsServiceDown","DefaultAuthorizationMethod","showVoiceServiceDown","showAllPhoneServicesDown","codeExpiredOrIncorrectMsg","codeExpiredMsg","codeNotEnteredMsg","codeTooManyAttemptsMsg","$onInit","getCodeSentDescriptionText","PrimaryPhoneExtension","PrimaryPhone","areAlternativeOptionsForTwoFactorAuthenticationAvailable","SecondaryPhone","onOverlayClick","onCancelClick","redirectToLoginPage","redirect","twoFactorAuthCodeEnterPressed","verifyCode","twoFactorAuthCodeChanged","evalCodeValidity","isCodeValid","isToManyAttempts","verificationCode","rememberDevice","onCodeVerifiedCallback","tryAgain","onHavingTroubleClick","loadAuthenticationOptions","phoneCallText","textMessageText","detailsForVoiceCall","push","title","provider","details","iconClass","phoneNumber","phoneExtension","primaryPhoneNumber","IsAuthAppEnabled","SecondaryPhoneExtension","askForCode","onClickAlternativeOption","option","getCodeSentDescriptionTextForSelectedOption","onSuccessCallback","VerifyTwoFactorAuthenticationComponent","TwoFactorAuthenticationConstants","TwoFactorAuthenticationMethod","NotYetRegistered","module","exports"],"sourceRoot":"webpack:///","sources":["./manager-base/components/reveal-password/reveal-password.js","./public/shared/components/verify-two-factor-authentication/verify-two-factor-authentication.js","./public/shared/constants/two-factor-authentication.js","./manager-base/components/reveal-password/reveal-password.html","./public/shared/components/verify-two-factor-authentication/verify-two-factor-authentication.html"],"sourcesContent":["/**\r\n * @ngdoc directive\r\n * @name bdRevealPassword\r\n * @restrict E\r\n * \r\n */\r\nimport templateHtml from './reveal-password.html';\r\n\r\nimport { $safeApply } from '@buildium/angularjs-core/dist/utilities/angularjs';\r\n\r\nconst component = {};\r\n\r\ncomponent.template = templateHtml;\r\n\r\ncomponent.bindings = {\r\n};\r\n\r\ncomponent.controllerAs = 'vm';\r\ncomponent.transclude = true;\r\n\r\nfunction RevealPasswordController($scope, $element, BdLocalize) {\r\n    const vm = this;\r\n    \r\n    vm.isShowingPassword = false;\r\n    vm.showPasswordText = null;\r\n    vm.hidePasswordText = null;\r\n    vm.isPasswordManagerIconVisible = false;\r\n    vm.isRevealEnabled = true;\r\n    \r\n    vm.togglePassword = function togglePassword() {\r\n        vm.isShowingPassword = !vm.isShowingPassword;\r\n        vm.input.attr('type', vm.isShowingPassword ? 'text' : 'password');\r\n    };\r\n\r\n    // $postLink is needed because of the transclusion\r\n    vm.$postLink = function postLink() {\r\n        vm.input = $element.find('input');\r\n        \r\n        vm.showPasswordText = BdLocalize.getString(\r\n            'Global.Component.RevealPassword.Tooltip.Show', 'Show'\r\n        );\r\n\r\n        vm.hidePasswordText = BdLocalize.getString(\r\n            'Global.Component.RevealPassword.Tooltip.Hide', 'Hide'\r\n        );\r\n\r\n        let observer = new MutationObserver(function onInputMutated() {\r\n            //mutations.forEach((mutation) => console.log(mutation));\r\n            vm.isPasswordManagerIconVisible = vm.input[0].style.backgroundImage !== '';\r\n            if (vm.isPasswordManagerIconVisible) { // Stop watching once this is set to true\r\n                observer.disconnect();\r\n                observer = null;\r\n                $safeApply($scope);\r\n            }\r\n        });\r\n\r\n        observer.observe(vm.input[0], {\r\n            attributes: true,\r\n            childList: true,\r\n            characterData: true\r\n        });\r\n    };\r\n\r\n    // set the input back to a password field when the form is submitted\r\n    $scope.$on('form-submit-started', () => {\r\n        vm.isShowingPassword = false;\r\n        vm.input.attr('type', 'password');\r\n    });\r\n}\r\n\r\nRevealPasswordController.$inject = ['$scope', '$element', 'BdLocalize'];\r\ncomponent.controller = RevealPasswordController;\r\nexport const RevealPasswordComponent = component;\r\n","import templateHtml from './verify-two-factor-authentication.html';\r\n\r\nconst component = {};\r\n\r\ncomponent.template = templateHtml;\r\n\r\ncomponent.bindings = {\r\n    twoFactorAuthenticationConfiguration: '<',\r\n    showRememberDevice: '<',\r\n    onVerifyCode: '&',\r\n    onAlternativeOptionSelected: '&',\r\n    useSingleTextBox: '<',\r\n    onRedirectWhenTokenExpired: '&',\r\n    isTwilioServiceEnabled: '<',\r\n    isSmsServiceEnabled: '<',\r\n    isVoiceServiceEnabled: '<',\r\n    isVerifyApiServiceEnabled: '<',\r\n    isSmsVoiceServiceEnabled: '<',\r\n};\r\n\r\nconst AuthenticationMethod = {\r\n    AuthApp: 3,\r\n    Voice: 2,\r\n    SMS: 1,\r\n};\r\n\r\ncomponent.controllerAs = 'vm';\r\n\r\nfunction VerifyTwoFactorAuthenticationController(\r\n    $window,\r\n    BdLocalize,\r\n    RedirectToLoginService,\r\n    ALERT_TYPE\r\n) {\r\n    const vm = this;\r\n\r\n    vm.AuthenticationMethods = AuthenticationMethod;\r\n    vm.enterCodeDescriptionText = '';\r\n    vm.showVerificationModal = true;\r\n    vm.showHavingTroubleModal = false;\r\n    vm.showHavingTroubleLink = true;\r\n    vm.isCodeExpiredOrIncorrect = false;\r\n    vm.isCodeExpired = false;\r\n    vm.codeNotEntered = false;\r\n    vm.isTooManyAttempts = false;\r\n    vm.twoFactorAuthenticationOptions = [];\r\n    vm.rememberMyDevice = false;\r\n    vm.twoFactorUserSettings = {\r\n        AuthAppVerificationCode: null\r\n    };\r\n    \r\n    vm.isAllPhoneServicesDown = !vm.isSmsServiceEnabled && !vm.isVoiceServiceEnabled && !vm.isVerifyApiServiceEnabled;\r\n    vm.isSmsServiceDown = !vm.isSmsServiceEnabled && !vm.isVerifyApiServiceEnabled;\r\n    vm.isVoiceServiceDown = !vm.isVoiceServiceEnabled && !vm.isVerifyApiServiceEnabled;\r\n    \r\n    vm.showSmsServiceDown = vm.isSmsServiceDown && !vm.isVoiceServiceDown && vm.twoFactorAuthenticationConfiguration.DefaultAuthorizationMethod === 1 && !vm.isSmsVoiceServiceEnabled;\r\n    vm.showVoiceServiceDown = vm.isVoiceServiceDown && !vm.isSmsServiceDown && vm.twoFactorAuthenticationConfiguration.DefaultAuthorizationMethod === 2 && !vm.isSmsVoiceServiceEnabled;\r\n    vm.showAllPhoneServicesDown = vm.isSmsServiceDown && vm.isVoiceServiceDown && vm.twoFactorAuthenticationConfiguration.DefaultAuthorizationMethod !== 3 && !vm.isSmsVoiceServiceEnabled;\r\n\r\n    vm.ALERT_TYPE = ALERT_TYPE;\r\n    vm.codeExpiredOrIncorrectMsg = BdLocalize.getString('Public.Login.TwoFactorAuthentication.VerificationCodeErrorMessage', 'Your authentication code expired or was incorrect.');\r\n    vm.codeExpiredMsg = BdLocalize.getString('Public.Login.TwoFactorAuthentication.ResetLinkHasExpired', 'Oops, two-factor authentication has been interrupted. Please try again.');\r\n    vm.codeNotEnteredMsg = BdLocalize.getString('Public.Login.TwoFactorAuthentication.VerificationCodeRequiredErrorMessage', 'You must enter an authentication code.');\r\n    vm.codeTooManyAttemptsMsg = BdLocalize.getString('Public.Login.Login.TooManyMfaAttempts', 'Sorry, we couldn\\'t verify your identity. Please try again later.');\r\n    \r\n    function getCodeSentDescriptionText() {\r\n        if (vm.twoFactorAuthenticationConfiguration.DefaultAuthorizationMethod === AuthenticationMethod.AuthApp) {\r\n            // The user has an authenticator app as default authorization method.\r\n            return BdLocalize.getString('Public.Login.TwoFactorAuthentication.AuthAppVerifyIdentityActionDescription',\r\n                'Check your authentication app for a code to sign in.');\r\n        }\r\n\r\n        if (vm.twoFactorAuthenticationConfiguration.DefaultAuthorizationMethod === AuthenticationMethod.Voice) {\r\n            // The user has voice call as default authorization method.\r\n            if (vm.twoFactorAuthenticationConfiguration.PrimaryPhoneExtension) {\r\n                // A phone extension has been configured.\r\n                return BdLocalize.getString('Public.Login.TwoFactorAuthentication.ExtensionDetails',\r\n                    `We called ${vm.twoFactorAuthenticationConfiguration.PrimaryPhone}, \r\n                    Ext.${vm.twoFactorAuthenticationConfiguration.PrimaryPhoneExtension} to provide you with an authentication code.`,\r\n                    [vm.twoFactorAuthenticationConfiguration.PrimaryPhone, vm.twoFactorAuthenticationConfiguration.PrimaryPhoneExtension]);\r\n            } else {\r\n                // No phone extension has been configured.\r\n                return BdLocalize.getString('Public.Login.TwoFactorAuthentication.PhoneCallVerifyIdentityActionDescription',\r\n                    `We called ${vm.twoFactorAuthenticationConfiguration.PrimaryPhone} to provide you with an authentication code.`,\r\n                    [vm.twoFactorAuthenticationConfiguration.PrimaryPhone]);\r\n            }\r\n        }\r\n\r\n        // If we reach this point then the user has text message as default authorization method.\r\n        return BdLocalize.getString('Public.Login.TwoFactorAuthentication.TextMessageIdentityActionDescription',\r\n            `We sent a text message with an authentication code to ${vm.twoFactorAuthenticationConfiguration.PrimaryPhone}`,\r\n            [vm.twoFactorAuthenticationConfiguration.PrimaryPhone]);\r\n    }\r\n\r\n    function areAlternativeOptionsForTwoFactorAuthenticationAvailable() {\r\n        // If the user has either a primary phone number or a secondary phone number configured\r\n        // then we can provide alternative options for two factor authentication.\r\n        return vm.twoFactorAuthenticationConfiguration\r\n            && (vm.twoFactorAuthenticationConfiguration.PrimaryPhone || vm.twoFactorAuthenticationConfiguration.SecondaryPhone);\r\n    }\r\n\r\n    vm.$onInit = function onInit() {\r\n        vm.enterCodeDescriptionText = getCodeSentDescriptionText();\r\n        vm.showHavingTroubleLink = areAlternativeOptionsForTwoFactorAuthenticationAvailable();\r\n    };\r\n\r\n    vm.onOverlayClick = function onOverlayClick() {\r\n        // Do nothing here. We don't want users to be able to close the modals when clicking outside them.\r\n    };\r\n\r\n    function redirectToLoginPage() {\r\n        RedirectToLoginService.redirect();\r\n    }\r\n\r\n    vm.onCancelClick = function onCancelClick() {\r\n        redirectToLoginPage();\r\n    };\r\n\r\n    vm.twoFactorAuthCodeEnterPressed = function twoFactorAuthCodeEnterPressed() {\r\n        if (!vm.isCodeExpired) {\r\n            vm.verifyCode();\r\n        }\r\n    };\r\n\r\n    vm.twoFactorAuthCodeChanged = function twoFactorAuthCodeChanged() {\r\n        vm.isCodeExpiredOrIncorrect = false;\r\n    };\r\n\r\n    vm.evalCodeValidity = function evalCodeValidity(isCodeValid, isCodeExpired, isToManyAttempts) {\r\n        if (isCodeExpired) {\r\n            vm.isCodeExpired = true;\r\n            vm.isCodeExpiredOrIncorrect = false;\r\n        } else if (isToManyAttempts) {\r\n            vm.isCodeExpired = false;\r\n            vm.isCodeExpiredOrIncorrect = false;\r\n            vm.isTooManyAttempts = true;\r\n        } else {\r\n            vm.isCodeExpiredOrIncorrect = isCodeValid === false;\r\n            vm.isCodeExpired = false;\r\n            vm.isTooManyAttempts = false;\r\n        }\r\n    };\r\n\r\n    vm.verifyCode = function verifyCode() {\r\n        if (vm.twoFactorUserSettings.AuthAppVerificationCode) {\r\n            vm.codeNotEntered = false;\r\n\r\n            vm.onVerifyCode(\r\n                {\r\n                    verificationCode: vm.twoFactorUserSettings.AuthAppVerificationCode,\r\n                    rememberDevice: vm.rememberMyDevice,\r\n                    onCodeVerifiedCallback: vm.evalCodeValidity\r\n                });\r\n        } else {\r\n            vm.codeNotEntered = true;\r\n        }\r\n    };\r\n\r\n    vm.tryAgain = function tryAgain() {\r\n        vm.codeNotEntered = false;\r\n        vm.onRedirectWhenTokenExpired();\r\n    };\r\n\r\n    function loadAuthenticationOptions() {\r\n        vm.twoFactorAuthenticationOptions = [];\r\n\r\n        const phoneCallText = BdLocalize.getString('Public.Login.TwoFactorAuthentication.PhoneCallLabel', 'Phone call');\r\n        const textMessageText = BdLocalize.getString('Public.Login.TwoFactorAuthentication.TextMessageLabel', 'Text message');\r\n\r\n        if (vm.twoFactorAuthenticationConfiguration.PrimaryPhone) {\r\n            // The user has a primary phone number configured. We must add the primary phone options.\r\n            let detailsForVoiceCall = vm.twoFactorAuthenticationConfiguration.PrimaryPhone;\r\n\r\n            if (vm.twoFactorAuthenticationConfiguration.PrimaryPhoneExtension) {\r\n                detailsForVoiceCall = BdLocalize.getString('Global.Component.Settings.Security.TwoFactorAuthentication.DeliveryMethod.ShortPhoneExtension',\r\n                    `${vm.twoFactorAuthenticationConfiguration.PrimaryPhone}, Ext. ${vm.twoFactorAuthenticationConfiguration.PrimaryPhoneExtension}`,\r\n                    [vm.twoFactorAuthenticationConfiguration.PrimaryPhone, vm.twoFactorAuthenticationConfiguration.PrimaryPhoneExtension]);\r\n            }\r\n\r\n            if (vm.isVoiceServiceEnabled || vm.isVerifyApiServiceEnabled || vm.isSmsVoiceServiceEnabled) {\r\n                vm.twoFactorAuthenticationOptions.push({\r\n                    title: phoneCallText,\r\n                    provider: 'Voice',\r\n                    details: detailsForVoiceCall,\r\n                    iconClass: 'verify-two-factor-authentication__having-trouble-image--phone-call',\r\n                    phoneNumber: vm.twoFactorAuthenticationConfiguration.PrimaryPhone,\r\n                    phoneExtension: vm.twoFactorAuthenticationConfiguration.PrimaryPhoneExtension,\r\n                    primaryPhoneNumber: true\r\n                });\r\n            }\r\n\r\n            if (vm.isSmsServiceEnabled || vm.isVerifyApiServiceEnabled || vm.isSmsVoiceServiceEnabled) {\r\n                vm.twoFactorAuthenticationOptions.push({\r\n                    title: textMessageText,\r\n                    provider: 'SMS',\r\n                    details: vm.twoFactorAuthenticationConfiguration.PrimaryPhone,\r\n                    iconClass: 'verify-two-factor-authentication__having-trouble-image--text-message',\r\n                    phoneNumber: vm.twoFactorAuthenticationConfiguration.PrimaryPhone,\r\n                    primaryPhoneNumber: true\r\n                });\r\n            }\r\n        }\r\n\r\n        if (vm.twoFactorAuthenticationConfiguration.IsAuthAppEnabled) {\r\n            // The user has an authenticator app configured. We must add the option.\r\n            vm.twoFactorAuthenticationOptions.push({\r\n                title: BdLocalize.getString('Public.Login.TwoFactorAuthentication.AuthenticationAppLabel', 'Authentication app'),\r\n                provider: 'AuthApp',\r\n                details: 'Check your authentication app for a code to sign in.',\r\n                iconClass: 'verify-two-factor-authentication__having-trouble-image--auth-app'\r\n            });\r\n        }\r\n\r\n        if (vm.twoFactorAuthenticationConfiguration.SecondaryPhone) {\r\n            // The user has a secondary phone number configured. We must add the secondary phone options.\r\n            let detailsForVoiceCall = vm.twoFactorAuthenticationConfiguration.SecondaryPhone;\r\n\r\n            if (vm.twoFactorAuthenticationConfiguration.SecondaryPhoneExtension) {\r\n                detailsForVoiceCall = BdLocalize.getString('Global.Component.Settings.Security.TwoFactorAuthentication.DeliveryMethod.ShortPhoneExtension',\r\n                    `${vm.twoFactorAuthenticationConfiguration.SecondaryPhone}, Ext. ${vm.twoFactorAuthenticationConfiguration.SecondaryPhoneExtension}`,\r\n                    [vm.twoFactorAuthenticationConfiguration.SecondaryPhone, vm.twoFactorAuthenticationConfiguration.SecondaryPhoneExtension]);\r\n            }\r\n\r\n            vm.twoFactorAuthenticationOptions.push({\r\n                title: phoneCallText,\r\n                provider: 'Voice',\r\n                details: detailsForVoiceCall,\r\n                iconClass: 'verify-two-factor-authentication__having-trouble-image--phone-call',\r\n                phoneNumber: vm.twoFactorAuthenticationConfiguration.SecondaryPhone,\r\n                phoneExtension: vm.twoFactorAuthenticationConfiguration.SecondaryPhoneExtension,\r\n                primaryPhoneNumber: false\r\n            });\r\n\r\n            vm.twoFactorAuthenticationOptions.push({\r\n                title: textMessageText,\r\n                provider: 'SMS',\r\n                details: vm.twoFactorAuthenticationConfiguration.SecondaryPhone,\r\n                iconClass: 'verify-two-factor-authentication__having-trouble-image--text-message',\r\n                phoneNumber: vm.twoFactorAuthenticationConfiguration.SecondaryPhone,\r\n                primaryPhoneNumber: false\r\n            });\r\n        }\r\n    }\r\n\r\n    vm.onHavingTroubleClick = function onHavingTroubleClick() {\r\n        loadAuthenticationOptions();\r\n        vm.showVerificationModal = false;\r\n        vm.showHavingTroubleModal = true;\r\n    };\r\n\r\n    vm.askForCode = function askForCode() {\r\n        vm.showVerificationModal = true;\r\n        vm.showHavingTroubleModal = false;\r\n    };\r\n\r\n    function getCodeSentDescriptionTextForSelectedOption(option) {\r\n        if (option.phoneNumber) {\r\n            // An option with a phone number was selected.\r\n            if (option.provider === 'SMS') {\r\n                return BdLocalize.getString('Public.Login.TwoFactorAuthentication.TextMessageIdentityActionDescription',\r\n                    `We sent a text message with an authentication code to ${option.phoneNumber}`,\r\n                    [option.phoneNumber]);\r\n            } else if (option.phoneExtension) {\r\n                return BdLocalize.getString('Public.Login.TwoFactorAuthentication.ExtensionDetails',\r\n                    `We called ${option.phoneNumber}, \r\n                    Ext.${option.phoneExtension} to provide you with an authentication code.`,\r\n                    [option.phoneNumber, option.phoneExtension]);\r\n            } else {\r\n                return BdLocalize.getString('Public.Login.TwoFactorAuthentication.PhoneCallVerifyIdentityActionDescription',\r\n                    `We called ${option.phoneNumber} to provide you with an authentication code.`,\r\n                    [option.phoneNumber]);\r\n            }\r\n        }\r\n\r\n        return BdLocalize.getString('Public.Login.TwoFactorAuthentication.AuthAppVerifyIdentityActionDescription',\r\n            'Check your authentication app for a code to sign in.');\r\n    }\r\n\r\n    vm.onClickAlternativeOption = function onClickAlternativeOption(option) {\r\n        vm.enterCodeDescriptionText = getCodeSentDescriptionTextForSelectedOption(option);\r\n        if (option.phoneNumber) {\r\n            // We only send a code when a phone option is selected.\r\n            vm.onAlternativeOptionSelected({option, onSuccessCallback: vm.askForCode});\r\n        } else {\r\n            // An authenticator app was selected.\r\n            vm.askForCode();\r\n        }\r\n    };\r\n}\r\n\r\nVerifyTwoFactorAuthenticationController.$inject = [\r\n    '$window',\r\n    'BdLocalize',\r\n    'RedirectToLoginService',\r\n    'ALERT_TYPE'\r\n];\r\ncomponent.controller = VerifyTwoFactorAuthenticationController;\r\nexport const VerifyTwoFactorAuthenticationComponent = component;\r\n","export const TwoFactorAuthenticationConstants = {\r\n    TwoFactorAuthenticationMethod: {\r\n        NotYetRegistered: 0,\r\n        SMS: 1,\r\n        Voice: 2,\r\n        AuthApp: 3\r\n    }\r\n};\r\n","module.exports = \"<div class=\\\"form-element__input-wrapper pos-relative\\\">\\r\\n    <div ng-transclude></div>\\r\\n    <div class=\\\"reveal-password {{vm.isPasswordManagerIconVisible ? 'reveal-password--right-spacing' : ''}}\\\" \\r\\n         ng-click=\\\"vm.togglePassword()\\\" \\r\\n         tooltip-popup=\\\"{{vm.isShowingPassword ? vm.hidePasswordText : vm.showPasswordText}}\\\">\\r\\n        <i class=\\\"reveal-password__icon {{vm.isShowingPassword ? 'password-eye' : 'password-eye-slash'}}\\\"></i>\\r\\n    </div>\\r\\n</div>\\r\\n\";","module.exports = \"<div class=\\\"verify-two-factor-authentication__container\\\">\\r\\n    <bd-modal visible=\\\"vm.showVerificationModal\\\"\\r\\n              size=\\\"custom\\\"\\r\\n              width=\\\"600\\\"\\r\\n              ignore-keyboard-escape=\\\"true\\\"\\r\\n              overlay-click-override=\\\"vm.onOverlayClick\\\"\\r\\n              close-fn=\\\"vm.onCancelClick()\\\">\\r\\n        <h2 class=\\\"modal__title\\\"\\r\\n            bd-i18n=\\\"Public.Login.TwoFactorAuthentication.ModalTitle\\\">Two-factor authentication</h2>\\r\\n        <div class=\\\"modal__text\\\">\\r\\n            <div class=\\\"verify-two-factor-authentication__body-title\\\"\\r\\n                 bd-i18n=\\\"Public.Login.TwoFactorAuthentication.VerifyIdentityActionTitle\\\">Let's verify your identity</div>\\r\\n            <div>{{vm.enterCodeDescriptionText}}</div>\\r\\n            <div ng-if=\\\"vm.showSmsServiceDown || vm.showVoiceServiceDown || vm.showAllPhoneServicesDown\\\">\\r\\n                <div class=\\\"form__vertical-spacer form__vertical-spacer--large\\\"></div>\\r\\n                <div class=\\\"alert alert--warning col-xs-12\\\" bd-i18n=\\\"Public.Login.TwoFactorAuthentication.TwilioServiceIsDown\\\" \\r\\n                     style=\\\"margin-bottom:20px;\\\" ng-if=\\\"vm.showAllPhoneServicesDown && vm.twoFactorAuthenticationConfiguration.IsAuthAppEnabled\\\">\\r\\n                    Phone number verification is down. Please use your authentication app to sign in.\\r\\n                </div>\\r\\n                <div class=\\\"alert alert--warning col-xs-12\\\" bd-i18n=\\\"Public.Login.TwoFactorAuthentication.TwilioSmsServiceIsDownUseAuthApp\\\"\\r\\n                     style=\\\"margin-bottom:20px;\\\" ng-if=\\\"vm.showSmsServiceDown && vm.twoFactorAuthenticationConfiguration.IsAuthAppEnabled\\\">\\r\\n                    We're having trouble with text message verification. Please use your authentication app to sign in.\\r\\n                </div>\\r\\n                <div class=\\\"alert alert--warning col-xs-12\\\" bd-i18n=\\\"Public.Login.TwoFactorAuthentication.TwilioSmsServiceIsDown\\\"\\r\\n                     style=\\\"margin-bottom:20px;\\\" ng-if=\\\"vm.showSmsServiceDown && !vm.twoFactorAuthenticationConfiguration.IsAuthAppEnabled\\\">\\r\\n                    We're having trouble with text message verification. Please try with a different method.\\r\\n                </div>\\r\\n                <div class=\\\"alert alert--warning col-xs-12\\\" bd-i18n=\\\"Public.Login.TwoFactorAuthentication.TwilioVoiceServiceIsDownUseAuthApp\\\"\\r\\n                     style=\\\"margin-bottom:20px;\\\" ng-if=\\\"vm.showVoiceServiceDown && vm.twoFactorAuthenticationConfiguration.IsAuthAppEnabled\\\">\\r\\n                    We're having trouble with phone number verification. Please use your authentication app to sign in.\\r\\n                </div>\\r\\n                <div class=\\\"alert alert--warning col-xs-12\\\" bd-i18n=\\\"Public.Login.TwoFactorAuthentication.TwilioVoiceServiceIsDown\\\"\\r\\n                     style=\\\"margin-bottom:20px;\\\" ng-if=\\\"vm.showVoiceServiceDown && !vm.twoFactorAuthenticationConfiguration.IsAuthAppEnabled\\\">\\r\\n                    We're having trouble with phone number verification. Please try with a different method.\\r\\n                </div>\\r\\n                <div class=\\\"alert alert--warning col-xs-12\\\" \\r\\n                     style=\\\"margin-bottom:20px;\\\" ng-if=\\\"!vm.twoFactorAuthenticationConfiguration.IsAuthAppEnabled && vm.showAllPhoneServicesDown\\\">\\r\\n                    <span bd-i18n=\\\"Public.Login.TwoFactorAuthentication.TwilioServiceIsDownNoCTA\\\">We're having trouble with phone number verification. If you don’t receive a code, please contact your administrator to log in.</span>\\r\\n                    <a bd-i18n=\\\"Public.Login.TwoFactorAuthentication.TwilioServiceIsDownNoCTA.LearnMore\\\" href=\\\"https://help.buildium.com/hc/s/article/Allow-administrators-to-skip-two-factor-authentication-for-staff-members\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\">&nbsp;Learn more</a>\\r\\n                </div>\\r\\n            </div>\\r\\n            <div class=\\\"form__vertical-spacer form__vertical-spacer--large\\\"></div>\\r\\n            <div class=\\\"text-bold verify-two-factor-authentication__body-enter-code\\\"\\r\\n                 bd-i18n=\\\"Public.Login.TwoFactorAuthentication.EnterCodeInputLabel\\\">Enter code</div>\\r\\n            <div class=\\\"form__vertical-spacer form__vertical-spacer--small\\\"></div>\\r\\n            <div>\\r\\n                <bd-two-factor-verification-simple-code-input two-factor-user-settings=\\\"vm.twoFactorUserSettings\\\"\\r\\n                                                              on-enter-key-pressed=\\\"vm.twoFactorAuthCodeEnterPressed()\\\"\\r\\n                                                              on-code-change=\\\"vm.twoFactorAuthCodeChanged()\\\">\\r\\n                </bd-two-factor-verification-simple-code-input>\\r\\n            </div>\\r\\n            <div class=\\\"form__vertical-spacer form__vertical-spacer--medium\\\"></div>\\r\\n\\r\\n            <bd-alert ng-if=\\\"vm.isCodeExpiredOrIncorrect\\\"\\r\\n                type=\\\"vm.ALERT_TYPE.Error\\\"\\r\\n                text=\\\"{{:: vm.codeExpiredOrIncorrectMsg}}\\\">\\r\\n            </bd-alert>\\r\\n            <bd-alert ng-if=\\\"vm.isTooManyAttempts\\\"\\r\\n                      type=\\\"vm.ALERT_TYPE.Error\\\"\\r\\n                      text=\\\"{{:: vm.codeTooManyAttemptsMsg}}\\\">\\r\\n            </bd-alert>\\r\\n            <bd-alert ng-if=\\\"vm.isCodeExpired\\\"\\r\\n                      type=\\\"vm.ALERT_TYPE.Error\\\"\\r\\n                      text=\\\"{{:: vm.codeExpiredMsg}}\\\">\\r\\n            </bd-alert>\\r\\n            <bd-alert ng-if=\\\"vm.codeNotEntered\\\"\\r\\n                      type=\\\"vm.ALERT_TYPE.Error\\\"\\r\\n                      text=\\\"{{:: vm.codeNotEnteredMsg}}\\\">\\r\\n            </bd-alert>\\r\\n            <div class=\\\"form__vertical-spacer form__vertical-spacer--medium\\\"></div>\\r\\n            <div><a href=\\\"#\\\"\\r\\n                    ng-click=\\\"vm.onHavingTroubleClick()\\\"\\r\\n                    ng-if=\\\"vm.showHavingTroubleLink\\\"\\r\\n                    bd-i18n=\\\"Public.Login.TwoFactorAuthentication.TroubleReceivingCodeLink\\\">Having trouble?</a></div>\\r\\n            <div class=\\\"form__vertical-spacer form__vertical-spacer--small\\\"></div>\\r\\n            <div ng-if=\\\"vm.showRememberDevice\\\">\\r\\n                <label for=\\\"rememberMyDeviceCheckbox\\\">\\r\\n                    <input type=\\\"checkbox\\\"\\r\\n                           id=\\\"rememberMyDeviceCheckbox\\\"\\r\\n                           name=\\\"rememberMyDeviceCheckbox\\\"\\r\\n                           ng-model=\\\"vm.rememberMyDevice\\\"\\r\\n                           class=\\\"js-hidden-input-validation form-element__checkbox\\\">\\r\\n                    <span class=\\\"form-element__checkbox-label\\\"\\r\\n                          bd-i18n=\\\"Public.Login.TwoFactorAuthentication.RememberMyDeviceLabel\\\">Remember my device</span>\\r\\n                </label>\\r\\n                <div class=\\\"form__vertical-spacer form__vertical-spacer--medium\\\"></div>\\r\\n            </div>\\r\\n            <div ng-if=\\\"!vm.isCodeExpired\\\"><a class=\\\"btn btn--primary form-actions__button save verify-two-factor-authentication__verify-button\\\"\\r\\n                    ng-click=\\\"vm.verifyCode()\\\"\\r\\n                    bd-i18n=\\\"Public.Login.TwoFactorAuthentication.VerifyCodeButton\\\">Verify</a></div>\\r\\n            <div ng-if=\\\"vm.isCodeExpired\\\"><a class=\\\"btn btn--primary form-actions__button save verify-two-factor-authentication__verify-button\\\"\\r\\n                    ng-click=\\\"vm.tryAgain()\\\"\\r\\n                    bd-i18n=\\\"Public.Login.TwoFactorAuthentication.TryAgain\\\">Try again</a></div>\\r\\n        </div>\\r\\n    </bd-modal>\\r\\n    <bd-modal visible=\\\"vm.showHavingTroubleModal\\\"\\r\\n              size=\\\"custom\\\"\\r\\n              width=\\\"600\\\"\\r\\n              ignore-keyboard-escape=\\\"true\\\"\\r\\n              overlay-click-override=\\\"vm.onOverlayClick\\\"\\r\\n              close-fn=\\\"vm.onCancelClick()\\\">\\r\\n        <h2 class=\\\"modal__title\\\" bd-i18n=\\\"Public.Login.TwoFactorAuthentication.ModalTitle\\\">Two-factor authentication</h2>\\r\\n        <div class=\\\"modal__text\\\">\\r\\n            <div class=\\\"verify-two-factor-authentication__body-title\\\"\\r\\n                 bd-i18n=\\\"Public.Login.TwoFactorAuthentication.TroubleReceivingCodeTitle\\\">Having trouble?</div>\\r\\n            <div class=\\\"form__vertical-spacer form__vertical-spacer--large\\\"></div>\\r\\n            <div>\\r\\n                <span bd-i18n=\\\"Public.Login.TwoFactorAuthentication.TroubleReceivingCodeDescriptionMultiPart\\\"\\r\\n                      sub-key=\\\"p1\\\">Try another method or review our </span>\\r\\n                <a class=\\\"verify-two-factor-authentication__having-trouble-link\\\"\\r\\n                   target=\\\"_blank\\\" rel=\\\"noopener\\\"\\r\\n                   href=\\\"https://www.buildium.com/two-factor-authentication/#2fa-troubleshooting\\\"\\r\\n                   bd-i18n=\\\"Public.Login.TwoFactorAuthentication.TroubleReceivingCodeDescriptionMultiPart\\\"\\r\\n                   sub-key=\\\"link\\\">help article</a>\\r\\n                <span bd-i18n=\\\"Public.Login.TwoFactorAuthentication.TroubleReceivingCodeDescriptionMultiPart\\\"\\r\\n                      sub-key=\\\"p2\\\"> for more information.</span>\\r\\n            </div>\\r\\n            <div class=\\\"form__vertical-spacer form__vertical-spacer--small\\\"></div>\\r\\n            <div>\\r\\n                <div class=\\\"row\\\"\\r\\n                     ng-repeat=\\\"option in vm.twoFactorAuthenticationOptions track by $index\\\">\\r\\n                    <div class=\\\"col-xs-12\\\">\\r\\n                        <div class=\\\"verify-two-factor-authentication__having-trouble-option-content\\\"\\r\\n                             ng-click=\\\"vm.onClickAlternativeOption(option)\\\">\\r\\n                            <div class=\\\"verify-two-factor-authentication__having-trouble-authentication__option-container\\\">\\r\\n                                <div class=\\\"verify-two-factor-authentication__having-trouble-image {{option.iconClass}}\\\"></div>\\r\\n                                <div class=\\\"verify-two-factor-authentication__having-trouble-authentication__option-label-text\\\">\\r\\n                                    <span class=\\\"verify-two-factor-authentication__having-trouble-authentication__option-title\\\">{{option.title}}</span>\\r\\n                                    <div class=\\\"form__vertical-spacer form__vertical-spacer--small\\\"></div>\\r\\n                                    <span class=\\\"verify-two-factor-authentication__having-trouble-authentication__option-description\\\">{{option.details}}</span>\\r\\n                                </div>\\r\\n                                <div class=\\\"verify-two-factor-authentication__having-trouble-option-content-arrow-container\\\">\\r\\n                                    <span class=\\\"verify-two-factor-authentication__having-trouble-option-content-arrow\\\">&rarr;</span>\\r\\n                                </div>\\r\\n                            </div>\\r\\n                        </div>\\r\\n                    </div>\\r\\n                </div>\\r\\n            </div>\\r\\n        </div>\\r\\n    </bd-modal>\\r\\n</div>\\r\\n\";"],"x_google_ignoreList":[]}