IPSCONTENT; if ( $setup ): $return .= <<language()->addToStack( htmlspecialchars( 'authy_authy_setup', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'authy_call_auth_done', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'authy_sms_auth_done', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'authy_onetouch_auth', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'authy_authy_auth', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'authy_call_auth_done', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'authy_call_auth', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'authy_choose_auth', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'authy_sms_auth', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; if ( $onetouch ): $return .= <<
IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'authy_onetouch_waiting', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
IPSCONTENT; endif; $return .= <<language()->bcp47(), 0, 2 ); $return .= << IPSCONTENT; endif; $return .= << 1 ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'authy_setup_alternative', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; if ( \in_array( 'sms', $availableMethods ) ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'authy_alt_sms', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'authy_alt_phone', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; if ( $done ): $return .= << IPSCONTENT; if ( !$onetouch ): $return .= << IPSCONTENT; endif; $return .= <<   IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'authy_submit_sms', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
IPSCONTENT; endif; $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; return $return; } function authyError( $error ) { $return = ''; $return .= <<
IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'authy_error', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<isAdmin() ): $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $error, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= <<
IPSCONTENT; if ( \IPS\Member::loggedIn()->canUseContactUs() ): $return .= <<
IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mfa_recovery_contact', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<
IPSCONTENT; if ( !$showingMultipleForms ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mfa_popup_setup_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; if ( \in_array( 'authy', $methods ) ): $return .= <<language()->addToStack( htmlspecialchars( 'authy_mfa_desc_authy_prefix', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'authy_mfa_desc_authy_only', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << 1 ): $return .= <<language()->addToStack( htmlspecialchars( 'authy_mfa_desc_fallback_sms_or_phone', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'authy_mfa_desc_fallback_phone', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'authy_mfa_desc_fallback_sms', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'authy_mfa_desc_phone_prefix', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'authy_mfa_desc_sms_or_phone', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'authy_mfa_desc_phone', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'authy_mfa_desc_sms', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
IPSCONTENT; if ( \in_array( 'authy', $methods ) ): $return .= << IPSCONTENT; $langCode = mb_substr( \IPS\Member::loggedIn()->language()->bcp47(), 0, 2 ); $return .= <<
IPSCONTENT; endif; $return .= <<
IPSCONTENT; if ( \IPS\Widget\Request::i()->countryCode ): $return .= << IPSCONTENT; $val = "{$error}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<
IPSCONTENT; if ( \in_array( 'authy', $methods ) ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'authy_submit_authy', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'authy_submit_call', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'authy_submit_sms', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "login", "core", 'global' )->mfaSetupOptOut( ); $return .= << IPSCONTENT; return $return; } function authySetupLockout( $showingMultipleForms, $lockEndTime=NULL ) { $return = ''; $return .= <<
IPSCONTENT; if ( !$showingMultipleForms ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mfa_popup_setup_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<
IPSCONTENT; $sprintf = array($lockEndTime); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'authy_setup_lockout', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= <<
IPSCONTENT; return $return; } function googleAuthenticatorAuth( $waitUntil ) { $return = ''; $return .= <<
IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'google_mfa_auth', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
  • IPSCONTENT; if ( \IPS\Widget\Request::i()->google_authenticator_auth_code ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'google_mfa_invalid_code', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<

IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'google_wait_for_code', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

IPSCONTENT; return $return; } function googleAuthenticatorSetup( $qrCodeUrl, $secretKey, $showingMultipleForms ) { $return = ''; $return .= <<
IPSCONTENT; if ( !$showingMultipleForms ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mfa_popup_setup_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; if ( $showingMultipleForms ): $return .= <<language()->addToStack( htmlspecialchars( 'google_mfa_desc_multi', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'google_mfa_desc_single', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
IPSCONTENT; $langCode = mb_substr( \IPS\Member::loggedIn()->language()->bcp47(), 0, 2 ); $return .= <<
IPSCONTENT; if ( !$showingMultipleForms ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mfa_popup_setup_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; if ( $showingMultipleForms ): $return .= <<language()->addToStack( htmlspecialchars( 'google_mfa_desc_multi_manual', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'google_mfa_desc_single_manual', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
  • IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'google_mfa_account', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'google_mfa_account_email', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
  • IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'google_mfa_key', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
    IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $secretKey, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<
  • IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'google_mfa_timebased', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'yes', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
IPSCONTENT; $langCode = mb_substr( \IPS\Member::loggedIn()->language()->bcp47(), 0, 2 ); $return .= <<
  • IPSCONTENT; if ( \IPS\Widget\Request::i()->google_authenticator_setup_code ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'google_mfa_invalid_code', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<
IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "login", "core", 'global' )->mfaSetupOptOut( ); $return .= << IPSCONTENT; return $return; } function loginButton( $method ) { $return = ''; $return .= << IPSCONTENT; if ( $icon = $method->buttonIcon() ): $return .= << IPSCONTENT; if ( \is_string( $icon ) ): $return .= << IPSCONTENT; elseif ( $icon === "apple" ): $return .= << IPSCONTENT; elseif ( $icon === "facebook-f" ): $return .= << IPSCONTENT; elseif ( $icon === "google" ): $return .= << IPSCONTENT; elseif ( $icon === "linkedin" ): $return .= << IPSCONTENT; elseif ( $icon === "windows" ): $return .= << IPSCONTENT; elseif ( $icon === "wordpress" ): $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $val = "{$method->buttonText()}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; $val = "{$method->buttonText()}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; return $return; } function mfaAuthenticate( $screen, $url ) { $return = ''; $return .= <<
IPSCONTENT; if ( \IPS\Dispatcher::i()->controllerLocation !== 'admin' ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mfa_back', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mfa_popup_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
{$screen}
IPSCONTENT; return $return; } function mfaLockout( $lockEndTime=NULL ) { $return = ''; $return .= <<
IPSCONTENT; if ( \IPS\Settings::i()->mfa_lockout_behaviour == 'lock' ): $return .= << IPSCONTENT; $sprintf = array($lockEndTime); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mfa_locked_out_end_time', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mfa_locked_out', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; if ( \IPS\Settings::i()->mfa_lockout_behaviour == 'email' ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mfa_recovery_email', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
IPSCONTENT; elseif ( \IPS\Settings::i()->mfa_lockout_behaviour == 'contact' ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mfa_recovery_contact', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; return $return; } function mfaRecovery( $handlers, $url, $knownDevicesAvailable=FALSE ) { $return = ''; $return .= <<

IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mfa_popup_recover_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mfa_popup_recover_info', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

IPSCONTENT; return $return; } function mfaSetup( $acceptableHandlers, $member, $url ) { $return = ''; $return .= <<
IPSCONTENT; $checked = NULL; $return .= << 1 ): $return .= <<

IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mfa_popup_setup_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mfa_setup_multiple', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

IPSCONTENT; foreach ( $acceptableHandlers as $key => $handler ): $return .= << IPSCONTENT; $val = "mfa_{$key}_title"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endforeach; $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "core", 'global' )->tabScrollers( ); $return .= <<
IPSCONTENT; endif; $return .= << IPSCONTENT; foreach ( $acceptableHandlers as $key => $handler ): $return .= <<
IPSCONTENT; endforeach; $return .= << IPSCONTENT; return $return; } function mfaSetupOptOut( ) { $return = ''; $return .= <<mfa_required_groups != '*' and !\IPS\Member::loggedIn()->inGroup( explode( ',', \IPS\Settings::i()->mfa_required_groups ) ) ): $return .= <<url()->stripQueryString(); $return .= <<
csrf(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<language()->checkKeyExists('security_questions_opt_out_warning_value') ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mfa_opt_out', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<
IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "core" )->userPhoto( \IPS\Member::loggedIn(), 'large' ); $return .= << IPSCONTENT; $sprintf = array(\IPS\Settings::i()->board_name); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'oauth_authorize_title', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= <<
IPSCONTENT; return $return; } function oauthLogin( $url, $client, $scopes, $login, $error ) { $return = ''; $return .= <<
IPSCONTENT; $usernamePasswordMethods = $login->usernamePasswordMethods(); $return .= <<buttonMethods(); $return .= << IPSCONTENT; $val = "{$error}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<

IPSCONTENT; $sprintf = array(\IPS\Settings::i()->board_name); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'oauth_authorize_title', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= << IPSCONTENT; if ( \IPS\Login::registrationType() != 'disabled' ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'dont_have_an_account', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; endif; $return .= <<language()->addToStack( htmlspecialchars( 'sign_up', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<


IPSCONTENT; endif; $return .= <<getTemplate( "system", "core" )->loginForm( $login ); $return .= <<

IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'sign_in_faster', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; if ( \count( $buttonMethods ) > 1 ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'sign_in_with_these', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; foreach ( $buttonMethods as $method ): $return .= << {$method->button()}

IPSCONTENT; endforeach; $return .= <<
IPSCONTENT; elseif ( $usernamePasswordMethods ): $return .= << IPSCONTENT; if ( $error ): $return .= << IPSCONTENT; $val = "{$error}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "system", "core" )->loginForm( $login ); $return .= << IPSCONTENT; elseif ( $buttonMethods ): $return .= << IPSCONTENT; if ( $error ): $return .= << IPSCONTENT; $val = "{$error}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; foreach ( $buttonMethods as $method ): $return .= << {$method->button()} IPSCONTENT; endforeach; $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; return $return; } function oauthLoginStandard( $id, $action, $elements, $hiddenValues, $actionButtons, $uploadField, $class='', $attributes=array(), $sidebar=NULL, $form=NULL ) { $return = ''; $return .= << IPSCONTENT; foreach ( $hiddenValues as $k => $v ): $return .= << IPSCONTENT; endforeach; $return .= << IPSCONTENT; foreach ( $elements as $collection ): $return .= <<htmlId ): $return .= <<
{$input->html()} IPSCONTENT; if ( \IPS\Settings::i()->allow_forgot_password != 'disabled' ): $return .= <<allow_forgot_password == 'redirect' ): $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; endif; $return .= <<language()->addToStack( htmlspecialchars( 'forgotten_password', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<error ): $return .= << IPSCONTENT; $val = "{$input->error}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; endif; $return .= <<rowHtml($form)} IPSCONTENT; endif; $return .= << IPSCONTENT; return $return; } function securityQuestionsAuth( $question ) { $return = ''; $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'security_questions_auth_blurb', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
IPSCONTENT; return $return; } function securityQuestionsSetup( $securityQuestions, $showingMultipleForms ) { $return = ''; $return .= <<

IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mfa_popup_setup_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
IPSCONTENT; $pluralize = array( \IPS\Settings::i()->security_questions_number ?: 3 ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'security_questions_setup_blurb', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) ); $return .= <<
IPSCONTENT; endif; $return .= << IPSCONTENT; foreach ( range( 1, min( \IPS\Settings::i()->security_questions_number ?: 3, \count( $securityQuestions ) ) ) as $i ): $return .= <<
IPSCONTENT; endforeach; $return .= << IPSCONTENT; if ( \is_array( \IPS\Widget\Request::i()->security_answer ) and \count( array_filter( \IPS\Widget\Request::i()->security_answer ) ) ): $return .= << IPSCONTENT; $pluralize = array( \IPS\Settings::i()->security_questions_number ?: 3 ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'security_questions_unique', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) ); $return .= << IPSCONTENT; endif; $return .= <<
  • IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "login", "core", 'global' )->mfaSetupOptOut( ); $return .= <<
    IPSCONTENT; if ( $method == 'phone' ): $return .= <<language()->addToStack( htmlspecialchars( 'verify_call_auth_done', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'verify_call_auth', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; if ( $done ): $return .= <<
  • IPSCONTENT; if ( \IPS\Widget\Request::i()->verify_auth_code ): $return .= << IPSCONTENT; $val = "{$error}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<
  • IPSCONTENT; if ( $setup ): $return .= <<
    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'verify_change_number', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; if ( \in_array( 'phone', $availableMethods ) ): $return .= <<   IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'verify_submit_call', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
    IPSCONTENT; endif; $return .= <<   IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'verify_submit_sms', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; endif; $return .= <<   IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'verify_submit_whatsapp', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; return $return; } function verifyError( $error ) { $return = ''; $return .= <<
    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'verify_error', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<isAdmin() ): $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $error, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= <<
    IPSCONTENT; if ( \IPS\Member::loggedIn()->canUseContactUs() ): $return .= <<
    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mfa_recovery_contact', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<
    IPSCONTENT; if ( !$showingMultipleForms ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mfa_popup_setup_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; if ( !$showingMultipleForms ): $return .= <<language()->addToStack( htmlspecialchars( 'verify_mfa_desc_phone_prefix', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << 1 ): $return .= <<language()->addToStack( htmlspecialchars( 'verify_mfa_desc_sms_or_phone', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'verify_mfa_desc_phone', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'verify_mfa_desc_sms', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
    IPSCONTENT; if ( \IPS\Widget\Request::i()->countryCode ): $return .= << IPSCONTENT; $val = "{$error}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<
    IPSCONTENT; if ( \in_array( 'phone', $methods ) ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'verify_submit_call', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'verify_submit_sms', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'verify_submit_whatsapp', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "login", "core", 'global' )->mfaSetupOptOut( ); $return .= << IPSCONTENT; return $return; } function verifySetupLockout( $showingMultipleForms, $lockEndTime=NULL ) { $return = ''; $return .= <<
    IPSCONTENT; if ( !$showingMultipleForms ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mfa_popup_setup_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<
    IPSCONTENT; $sprintf = array($lockEndTime); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'verify_setup_lockout', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= <<
    IPSCONTENT; return $return; }}