Advertisement
Guest User

Untitled

a guest
Apr 13th, 2018
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 59.28 KB | None | 0 0
  1. "use strict";
  2.  
  3. function CLoginPromptManager( strBaseURL, rgOptions )
  4. {
  5. // normalize with trailing slash
  6. this.m_strBaseURL = strBaseURL + ( strBaseURL.substr(-1) == '/' ? '' : '/' ) + ( this.m_bIsMobile ? 'mobilelogin' : 'login' ) + '/';
  7. this.m_strSiteBaseURL = strBaseURL; // Actual base url, not the login base url above.
  8.  
  9. // read options
  10. rgOptions = rgOptions || {};
  11. this.m_bIsMobile = rgOptions.bIsMobile || false;
  12. this.m_strMobileClientType = rgOptions.strMobileClientType || '';
  13. this.m_strMobileClientVersion = rgOptions.strMobileClientVersion || '';
  14. this.m_bIsMobileSteamClient = ( this.m_strMobileClientType ? true : false );
  15. this.m_bMobileClientSupportsPostMessage = rgOptions.bMobileClientSupportsPostMessage || false;
  16.  
  17. this.m_$LogonForm = $JFromIDOrElement( rgOptions.elLogonForm || document.forms['logon'] );
  18.  
  19. this.m_fnOnFailure = rgOptions.fnOnFailure || null;
  20. this.m_fnOnSuccess = rgOptions.fnOnSuccess || null;
  21.  
  22. this.m_strRedirectURL = rgOptions.strRedirectURL || (this.m_bIsMobile ? '' : strBaseURL);
  23. this.m_strSessionID = rgOptions.strSessionID || null;
  24.  
  25. this.m_strUsernameEntered = null;
  26. this.m_strUsernameCanonical = null;
  27.  
  28. if ( rgOptions.gidCaptcha )
  29. this.UpdateCaptcha( rgOptions.gidCaptcha );
  30. else
  31. this.RefreshCaptcha(); // check if needed
  32.  
  33.  
  34. this.m_bLoginInFlight = false;
  35. this.m_bInEmailAuthProcess = false;
  36. this.m_bInTwoFactorAuthProcess = false;
  37. this.m_TwoFactorModal = null;
  38. this.m_bEmailAuthSuccessful = false;
  39. this.m_bLoginTransferInProgress = false;
  40. this.m_bEmailAuthSuccessfulWantToLeave = false;
  41. this.m_bTwoFactorAuthSuccessful = false;
  42. this.m_bTwoFactorAuthSuccessfulWantToLeave = false;
  43. this.m_sOAuthRedirectURI = 'steammobile://mobileloginsucceeded';
  44. this.m_sAuthCode = "";
  45. this.m_sPhoneNumberLastDigits = "??";
  46. this.m_bTwoFactorReset = false;
  47.  
  48. // values we collect from the user
  49. this.m_steamidEmailAuth = '';
  50.  
  51.  
  52. // record keeping
  53. this.m_iIncorrectLoginFailures = 0; // mobile reveals password after a couple failures
  54.  
  55. var _this = this;
  56.  
  57. this.m_$LogonForm.submit( function(e) {
  58. _this.DoLogin();
  59. e.preventDefault();
  60. });
  61. // find buttons and make them clickable
  62. $J('#login_btn_signin' ).children('a, button' ).click( function() { _this.DoLogin(); } );
  63.  
  64. this.InitModalContent();
  65.  
  66. // these modals need to be in the body because we refer to elements by name before they are ready
  67. this.m_$ModalAuthCode = this.GetModalContent( 'loginAuthCodeModal' );
  68. this.m_$ModalAuthCode.find('[data-modalstate]' ).each( function() {
  69. $J(this).click( function() { _this.SetEmailAuthModalState( $J(this).data('modalstate') ); } );
  70. });
  71. this.m_$ModalAuthCode.find('form').submit( function(e) {
  72. _this.SetEmailAuthModalState('submit');
  73. e.preventDefault();
  74. });
  75. this.m_EmailAuthModal = null;
  76.  
  77. this.m_$ModalIPT = this.GetModalContent( 'loginIPTModal' );
  78.  
  79. this.m_$ModalTwoFactor = this.GetModalContent( 'loginTwoFactorCodeModal' );
  80. this.m_$ModalTwoFactor.find( '[data-modalstate]' ).each( function() {
  81. $J(this).click( function() { _this.SetTwoFactorAuthModalState( $J(this).data('modalstate') ); } );
  82. });
  83. this.m_$ModalTwoFactor.find( 'form' ).submit( function(e) {
  84. // Prevent submit if nothing was entered
  85. if ( $J('#twofactorcode_entry').val() != '' )
  86. {
  87. // Push the left button
  88. var $btnLeft = _this.m_$ModalTwoFactor.find( '.auth_buttonset:visible .auth_button.leftbtn ' );
  89. $btnLeft.trigger( 'click' );
  90. }
  91.  
  92. e.preventDefault();
  93. });
  94.  
  95.  
  96.  
  97. // register to listen to IOS two factor callback
  98. $J(document).on('SteamMobile_ReceiveAuthCode', function( e, authcode ) {
  99. _this.m_sAuthCode = authcode;
  100. });
  101.  
  102. $J('#captchaRefreshLink' ).click( $J.proxy( this.RefreshCaptcha, this ) );
  103.  
  104. // include some additional scripts we may need
  105. if ( typeof BigNumber == 'undefined' )
  106. $J.ajax( { url: 'https://steamstore-a.akamaihd.net/public/shared/javascript/crypto/jsbn.js', type: 'get', dataType: 'script', cache: true } );
  107. if ( typeof RSA == 'undefined' )
  108. $J.ajax( { url: 'https://steamstore-a.akamaihd.net/public/shared/javascript/crypto/rsa.js', type: 'get', dataType: 'script', cache: true } );
  109. }
  110.  
  111. CLoginPromptManager.prototype.BIsIos = function() { return this.m_strMobileClientType == 'ios'; };
  112. CLoginPromptManager.prototype.BIsAndroid = function() { return this.m_strMobileClientType == 'android'; };
  113. CLoginPromptManager.prototype.BIsWinRT = function() { return this.m_strMobileClientType == 'winrt'; };
  114.  
  115. CLoginPromptManager.prototype.BIsUserInMobileClientVersionOrNewer = function( nMinMajor, nMinMinor, nMinPatch ) {
  116. if ( (!this.BIsIos() && !this.BIsAndroid() && !this.BIsWinRT() ) || this.m_strMobileClientVersion == '' )
  117. return false;
  118.  
  119. var version = this.m_strMobileClientVersion.match( /(?:(\d+) )?\(?(\d+)\.(\d+)(?:\.(\d+))?\)?/ );
  120. if ( version && version.length >= 3 )
  121. {
  122. var nMajor = parseInt( version[2] );
  123. var nMinor = parseInt( version[3] );
  124. var nPatch = parseInt( version[4] );
  125.  
  126. return nMajor > nMinMajor || ( nMajor == nMinMajor && ( nMinor > nMinMinor || ( nMinor == nMinMinor && nPatch >= nMinPatch ) ) );
  127. }
  128. };
  129.  
  130. CLoginPromptManager.prototype.GetParameters = function( rgParams )
  131. {
  132. var rgDefaultParams = { 'donotcache': new Date().getTime() };
  133. if ( this.m_strSessionID )
  134. rgDefaultParams['sessionid'] = this.m_strSessionID;
  135.  
  136. return $J.extend( rgDefaultParams, rgParams );
  137. };
  138.  
  139. CLoginPromptManager.prototype.$LogonFormElement = function( strElementName )
  140. {
  141. var $Form = this.m_$LogonForm;
  142. var elInput = this.m_$LogonForm[0].elements[ strElementName ];
  143.  
  144. if ( !elInput )
  145. {
  146. var $Input = $J('<input/>', {type: 'hidden', name: strElementName } );
  147. $Form.append( $Input );
  148. return $Input;
  149. }
  150. else
  151. {
  152. return $J( elInput );
  153. }
  154. };
  155.  
  156. CLoginPromptManager.prototype.HighlightFailure = function( msg )
  157. {
  158. if ( this.m_fnOnFailure )
  159. {
  160. this.m_fnOnFailure( msg );
  161.  
  162. // always blur on mobile so the error can be seen
  163. if ( this.m_bIsMobile && msg )
  164. $J('input:focus').blur();
  165. }
  166. else
  167. {
  168. var $ErrorElement = $J('#error_display');
  169.  
  170. if ( msg )
  171. {
  172. $ErrorElement.text( msg );
  173. $ErrorElement.slideDown();
  174.  
  175. if ( this.m_bIsMobile )
  176. $J('input:focus').blur();
  177. }
  178. else
  179. {
  180. $ErrorElement.hide();
  181. }
  182. }
  183. };
  184.  
  185.  
  186. //Refresh the catpcha image
  187. CLoginPromptManager.prototype.RefreshCaptcha = function()
  188. {
  189. var _this = this;
  190. $J.post( this.m_strBaseURL + 'refreshcaptcha/', this.GetParameters( {} ) )
  191. .done( function( data ) {
  192. _this.UpdateCaptcha( data.gid );
  193. });
  194. };
  195.  
  196. CLoginPromptManager.prototype.UpdateCaptcha = function( gid )
  197. {
  198. if ( gid != -1 )
  199. {
  200. $J('#captcha_entry').show();
  201. $J('#captchaImg').attr( 'src', this.m_strBaseURL + 'rendercaptcha/?gid='+gid );
  202. this.$LogonFormElement('captcha_text').val('');
  203. }
  204. else
  205. {
  206. $J('#captcha_entry' ).hide();
  207. }
  208. this.m_gidCaptcha = gid;
  209. };
  210.  
  211. CLoginPromptManager.prototype.DoLogin = function()
  212. {
  213. var form = this.m_$LogonForm[0];
  214.  
  215. var username = form.elements['username'].value;
  216. this.m_strUsernameEntered = username;
  217. username = username.replace( /[^\x00-\x7F]/g, '' ); // remove non-standard-ASCII characters
  218. this.m_strUsernameCanonical = username;
  219.  
  220. var password = form.elements['password'].value;
  221. password = password.replace( /[^\x00-\x7F]/g, '' ); // remove non-standard-ASCII characters
  222.  
  223. if ( this.m_bLoginInFlight || password.length == 0 || username.length == 0 )
  224. return;
  225.  
  226. this.m_bLoginInFlight = true;
  227. $J('#login_btn_signin').hide();
  228. $J('#login_btn_wait').show();
  229.  
  230. // reset some state
  231. this.HighlightFailure( '' );
  232.  
  233. var _this = this;
  234. $J.post( this.m_strBaseURL + 'getrsakey/', this.GetParameters( { username: username } ) )
  235. .done( $J.proxy( this.OnRSAKeyResponse, this ) )
  236. .fail( function () {
  237. ShowAlertDialog( 'Fout', 'Er is een fout opgetreden bij het verbinden met de Steam-servers. Probeer het later opnieuw.' );
  238. $J('#login_btn_signin').show();
  239. $J('#login_btn_wait').hide();
  240. _this.m_bLoginInFlight = false;
  241. });
  242. };
  243.  
  244. // used to get mobile client to execute a steammobile URL
  245. CLoginPromptManager.prototype.RunLocalURL = function(url)
  246. {
  247. var $IFrame = $J('<iframe/>', {src: url} );
  248. $J(document.body).append( $IFrame );
  249.  
  250. // take it back out immediately
  251. $IFrame.remove();
  252. };
  253.  
  254. var g_interval = null;
  255.  
  256. // read results from Android or WinRT clients
  257. CLoginPromptManager.prototype.GetValueFromLocalURL = function( url, callback )
  258. {
  259. window.g_status = null;
  260. window.g_data = null;
  261. this.RunLocalURL( url );
  262.  
  263. var timeoutTime = Date.now() + 1000 * 5;
  264.  
  265. if ( g_interval != null )
  266. {
  267. window.clearInterval( g_interval );
  268. g_interval = null;
  269. }
  270.  
  271. // poll regularly (but gently) for an update.
  272. g_interval = window.setInterval( function() {
  273. var status = window.SGHandler.getResultStatus();
  274. if ( status && status != 'busy' )
  275. {
  276. if ( g_interval )
  277. window.clearInterval( g_interval );
  278.  
  279. var value = window.SGHandler.getResultValue();
  280. callback( [ status, value ] );
  281. return;
  282. }
  283. if ( Date.now() > timeoutTime )
  284. {
  285. if ( g_interval )
  286. window.clearInterval( g_interval );
  287. callback( ['error', 'timeout'] );
  288. return;
  289. }
  290. }, 100);
  291. };
  292.  
  293. // this function is invoked by iOS after the steammobile:// url is triggered by GetAuthCode.
  294. // we post an event to the dom to let any login handlers deal with it.
  295. function receiveAuthCode( code )
  296. {
  297. $J(document).trigger( 'SteamMobile_ReceiveAuthCode', [ code ] );
  298. };
  299.  
  300. CLoginPromptManager.prototype.GetAuthCode = function( results, callback )
  301. {
  302. if ( this.m_bIsMobile )
  303. {
  304. // honor manual entry before anything else
  305. var code = $J('#twofactorcode_entry').val();
  306. if ( code.length > 0 )
  307. {
  308. callback( results, code );
  309. return;
  310. }
  311.  
  312. if ( this.BIsIos() )
  313. {
  314. this.m_sAuthCode = '';
  315. this.RunLocalURL( "steammobile://twofactorcode?gid=" + results.token_gid );
  316.  
  317. // this is expected to trigger receiveAuthCode and we'll have this value set by the time it's done
  318. if ( this.m_sAuthCode.length > 0 )
  319. {
  320. callback( results, this.m_sAuthCode );
  321. return;
  322. }
  323. }
  324. else if ( this.BIsAndroid() || this.BIsWinRT() )
  325. {
  326. var result = this.GetValueFromLocalURL('steammobile://twofactorcode?gid=' + results.token_gid, function(result) {
  327. if ( result[0] == 'ok' )
  328. {
  329. callback(results, result[1]);
  330. } else {
  331. // this may be in the modal
  332. callback(results, $J('#twofactorcode_entry').val());
  333. }
  334. });
  335. return;
  336. }
  337.  
  338. // this may be in the modal
  339. callback(results, $J('#twofactorcode_entry').val());
  340. }
  341. else
  342. {
  343. var authCode = this.m_sAuthCode;
  344. this.m_sAuthCode = '';
  345. callback( results, authCode );
  346. }
  347. };
  348.  
  349.  
  350. CLoginPromptManager.prototype.OnRSAKeyResponse = function( results )
  351. {
  352. if ( results.publickey_mod && results.publickey_exp && results.timestamp )
  353. {
  354. this.GetAuthCode( results , $J.proxy(this.OnAuthCodeResponse, this) );
  355. }
  356. else
  357. {
  358. if ( results.message )
  359. {
  360. this.HighlightFailure( results.message );
  361. }
  362.  
  363. $J('#login_btn_signin').show();
  364. $J('#login_btn_wait').hide();
  365.  
  366. this.m_bLoginInFlight = false;
  367. }
  368. };
  369.  
  370. CLoginPromptManager.prototype.OnAuthCodeResponse = function( results, authCode )
  371. {
  372. var form = this.m_$LogonForm[0];
  373. var pubKey = RSA.getPublicKey(results.publickey_mod, results.publickey_exp);
  374. var username = this.m_strUsernameCanonical;
  375. var password = form.elements['password'].value;
  376. password = password.replace(/[^\x00-\x7F]/g, ''); // remove non-standard-ASCII characters
  377. var encryptedPassword = RSA.encrypt(password, pubKey);
  378.  
  379. var rgParameters = {
  380. password: encryptedPassword,
  381. username: username,
  382. twofactorcode: authCode,
  383. emailauth: form.elements['emailauth'] ? form.elements['emailauth'].value : '',
  384. loginfriendlyname: form.elements['loginfriendlyname'] ? form.elements['loginfriendlyname'].value : '',
  385. captchagid: this.m_gidCaptcha,
  386. captcha_text: form.elements['captcha_text'] ? form.elements['captcha_text'].value : '',
  387. emailsteamid: this.m_steamidEmailAuth,
  388. rsatimestamp: results.timestamp,
  389. remember_login: ( form.elements['remember_login'] && form.elements['remember_login'].checked ) ? 'true' : 'false'
  390. };
  391.  
  392. if (this.m_bIsMobile)
  393. rgParameters.oauth_client_id = form.elements['oauth_client_id'].value;
  394.  
  395. var _this = this;
  396. $J.post(this.m_strBaseURL + 'dologin/', this.GetParameters(rgParameters))
  397. .done($J.proxy(this.OnLoginResponse, this))
  398. .fail(function () {
  399. ShowAlertDialog('Error', 'There was a problem communicating with the Steam servers. Please try again later.');
  400.  
  401. $J('#login_btn_signin').show();
  402. $J('#login_btn_wait').hide();
  403. _this.m_bLoginInFlight = false;
  404. });
  405. };
  406.  
  407.  
  408. CLoginPromptManager.prototype.OnLoginResponse = function( results )
  409. {
  410. this.m_bLoginInFlight = false;
  411. var bRetry = true;
  412.  
  413. if ( results.login_complete )
  414. {
  415. if ( this.m_bIsMobile && results.oauth )
  416. {
  417. if( results.redirect_uri )
  418. {
  419. this.m_sOAuthRedirectURI = results.redirect_uri;
  420. }
  421.  
  422. this.$LogonFormElement('oauth' ).val( results.oauth );
  423. bRetry = false;
  424. this.LoginComplete();
  425. return;
  426. }
  427.  
  428. var bRunningTransfer = false;
  429. if ( ( results.transfer_url || results.transfer_urls ) && results.transfer_parameters )
  430. {
  431. bRunningTransfer = true;
  432. this.TransferLogin( results.transfer_urls || [ results.transfer_url ], results.transfer_parameters );
  433. }
  434.  
  435. if ( this.m_bInEmailAuthProcess )
  436. {
  437. this.m_bEmailAuthSuccessful = true;
  438. this.SetEmailAuthModalState( 'success' );
  439. }
  440. else if ( this.m_bInTwoFactorAuthProcess )
  441. {
  442. this.m_bTwoFactorAuthSuccessful = true;
  443. this.SetTwoFactorAuthModalState( 'success' );
  444. }
  445. else
  446. {
  447. bRetry = false;
  448. if ( !bRunningTransfer )
  449. this.LoginComplete();
  450. }
  451. }
  452. else
  453. {
  454. // if there was some kind of other error while doing email auth or twofactor, make sure
  455. // the modals don't get stuck
  456. if ( !results.emailauth_needed && this.m_EmailAuthModal )
  457. this.m_EmailAuthModal.Dismiss();
  458.  
  459. if ( !results.requires_twofactor && this.m_TwoFactorModal )
  460. this.m_TwoFactorModal.Dismiss();
  461.  
  462. if ( results.requires_twofactor )
  463. {
  464. $J('#captcha_entry').hide();
  465.  
  466. if ( !this.m_bInTwoFactorAuthProcess )
  467. this.StartTwoFactorAuthProcess();
  468. else
  469. this.SetTwoFactorAuthModalState( 'incorrectcode' );
  470. }
  471. else if ( results.captcha_needed && results.captcha_gid )
  472. {
  473. this.UpdateCaptcha( results.captcha_gid );
  474. this.m_iIncorrectLoginFailures ++;
  475. }
  476. else if ( results.emailauth_needed )
  477. {
  478. if ( results.emaildomain )
  479. $J('#emailauth_entercode_emaildomain').text( results.emaildomain );
  480.  
  481. if ( results.emailsteamid )
  482. this.m_steamidEmailAuth = results.emailsteamid;
  483.  
  484. if ( !this.m_bInEmailAuthProcess )
  485. this.StartEmailAuthProcess();
  486. else
  487. this.SetEmailAuthModalState( 'incorrectcode' );
  488. }
  489. else if ( results.denied_ipt )
  490. {
  491. ShowDialog( 'Intel® Identity Protection Technology', this.m_$ModalIPT.show() ).always( $J.proxy( this.ClearLoginForm, this ) );
  492. }
  493. else
  494. {
  495. this.m_strUsernameEntered = null;
  496. this.m_strUsernameCanonical = null;
  497. this.m_iIncorrectLoginFailures ++;
  498. }
  499.  
  500. if ( results.message )
  501. {
  502. this.HighlightFailure( results.message );
  503. if ( this.m_bIsMobile && this.m_iIncorrectLoginFailures > 1 && !results.emailauth_needed && !results.bad_captcha )
  504. {
  505. // 2 failed logins not due to Steamguard or captcha, un-obfuscate the password field
  506. $J( '#passwordclearlabel' ).show();
  507. $J( '#steamPassword' ).val('');
  508. $J( '#steamPassword' ).attr( 'type', 'text' );
  509. $J( '#steamPassword' ).attr( 'autocomplete', 'off' );
  510. }
  511. else if ( results.clear_password_field )
  512. {
  513. $J( '#input_password' ).val('');
  514. $J( '#input_password' ).focus();
  515. }
  516.  
  517. }
  518. }
  519. if ( bRetry )
  520. {
  521. $J('#login_btn_signin').show();
  522. $J('#login_btn_wait').hide();
  523. }
  524. };
  525.  
  526. CLoginPromptManager.prototype.ClearLoginForm = function()
  527. {
  528. var rgElements = this.m_$LogonForm[0].elements;
  529. rgElements['username'].value = '';
  530. rgElements['password'].value = '';
  531. if ( rgElements['emailauth'] ) rgElements['emailauth'].value = '';
  532. this.m_steamidEmailAuth = '';
  533.  
  534. // part of the email auth modal
  535. $J('#authcode').value = '';
  536.  
  537. if ( this.m_gidCaptcha )
  538. this.RefreshCaptcha();
  539.  
  540. rgElements['username'].focus();
  541. };
  542.  
  543. CLoginPromptManager.prototype.StartEmailAuthProcess = function()
  544. {
  545. this.m_bInEmailAuthProcess = true;
  546.  
  547. this.SetEmailAuthModalState( 'entercode' );
  548.  
  549. var _this = this;
  550. this.m_EmailAuthModal = ShowDialog( 'Steam Guard', this.m_$ModalAuthCode.show() )
  551. .always( function() {
  552. $J(document.body).append( _this.m_$ModalAuthCode.hide() );
  553. _this.CancelEmailAuthProcess();
  554. _this.m_EmailAuthModal = null;
  555. } );
  556.  
  557. this.m_EmailAuthModal.SetDismissOnBackgroundClick( false );
  558. this.m_EmailAuthModal.SetRemoveContentOnDismissal( false );
  559. $J('#authcode_entry').find('input').focus();
  560. };
  561.  
  562. CLoginPromptManager.prototype.CancelEmailAuthProcess = function()
  563. {
  564. this.m_steamidEmailAuth = '';
  565. if ( this.m_bInEmailAuthProcess )
  566. {
  567. this.m_bInEmailAuthProcess = false;
  568.  
  569. // if the user closed the auth window on the last step, just redirect them like we normally would
  570. if ( this.m_bEmailAuthSuccessful )
  571. this.LoginComplete();
  572. }
  573. };
  574.  
  575. CLoginPromptManager.prototype.TransferLogin = function( rgURLs, parameters )
  576. {
  577. if ( this.m_bLoginTransferInProgress )
  578. return;
  579. this.m_bLoginTransferInProgress = true;
  580.  
  581. var bOnCompleteFired = false;
  582. var _this = this;
  583. var fnOnComplete = function() {
  584. if ( !bOnCompleteFired )
  585. _this.OnTransferComplete();
  586. bOnCompleteFired = true;
  587. };
  588.  
  589. var cResponsesExpected = rgURLs.length;
  590. $J(window).on( 'message', function() {
  591. if ( --cResponsesExpected == 0 )
  592. fnOnComplete();
  593. });
  594.  
  595. for ( var i = 0 ; i < rgURLs.length; i++ )
  596. {
  597. var $IFrame = $J('<iframe>', {id: 'transfer_iframe' } ).hide();
  598. $J(document.body).append( $IFrame );
  599.  
  600. var doc = $IFrame[0].contentWindow.document;
  601. doc.open();
  602. doc.write( '<form method="POST" action="' + rgURLs[i] + '" name="transfer_form">' );
  603. for ( var param in parameters )
  604. {
  605. doc.write( '<input type="hidden" name="' + param + '" value="' + V_EscapeHTML( parameters[param] ) + '">' );
  606. }
  607. doc.write( '</form>' );
  608. doc.write( '<script>window.onload = function(){ document.forms["transfer_form"].submit(); }</script>' );
  609. doc.close();
  610. }
  611.  
  612. // after 10 seconds, give up on waiting for transfer
  613. window.setTimeout( fnOnComplete, 10000 );
  614. };
  615.  
  616. CLoginPromptManager.prototype.OnTransferComplete = function()
  617. {
  618. if ( !this.m_bLoginTransferInProgress )
  619. return;
  620. this.m_bLoginTransferInProgress = false;
  621. if ( !this.m_bInEmailAuthProcess && !this.m_bInTwoFactorAuthProcess )
  622. this.LoginComplete();
  623. else if ( this.m_bEmailAuthSuccessfulWantToLeave || this.m_bTwoFactorAuthSuccessfulWantToLeave)
  624. this.LoginComplete();
  625. };
  626.  
  627. CLoginPromptManager.prototype.OnEmailAuthSuccessContinue = function()
  628. {
  629. $J('#auth_buttonsets').children().hide();
  630. $J('#auth_buttonset_waiting').show();
  631.  
  632. if ( this.m_bLoginTransferInProgress )
  633. {
  634. this.m_bEmailAuthSuccessfulWantToLeave = true;
  635. }
  636. else
  637. this.LoginComplete();
  638. };
  639.  
  640. CLoginPromptManager.prototype.LoginComplete = function()
  641. {
  642. if ( this.m_fnOnSuccess )
  643. {
  644. this.m_fnOnSuccess();
  645. }
  646. else if ( $J('#openidForm').length )
  647. {
  648. $J('#openidForm').submit();
  649. }
  650. else if ( this.m_strRedirectURL != '' )
  651. {
  652. // If this isn't one of our URLs, reject anything that looks like it has a protocol in it.
  653. if ( this.m_strRedirectURL.match ( /^[^\/]*:/i ) )
  654. {
  655. if ( this.m_strRedirectURL.replace( /^http:/, 'https:' ).indexOf( this.m_strSiteBaseURL.replace( /^http:/, 'https:') ) !== 0 )
  656. {
  657. this.m_strRedirectURL = '';
  658. }
  659. }
  660. // browsers treat multiple leading slashes as the end of the protocol specifier
  661. if ( this.m_strRedirectURL.match( /^\/\// ) ) { this.m_strRedirectURL = ''; }
  662. if( this.m_strRedirectURL )
  663. window.location = this.m_strRedirectURL;
  664. else
  665. window.location = this.m_strSiteBaseURL
  666. }
  667. else if ( this.m_bIsMobile )
  668. {
  669. var oauthJSON = document.forms['logon'].elements['oauth'] && document.forms['logon'].elements['oauth'].value;
  670. if ( oauthJSON && ( oauthJSON.length > 0 ) )
  671. {
  672. if ( this.m_bMobileClientSupportsPostMessage )
  673. {
  674. var strHost = window.location.protocol + '//' + window.location.host;
  675. window.postMessage( oauthJSON, strHost );
  676. }
  677. else
  678. {
  679. window.location = this.m_sOAuthRedirectURI + '?' + oauthJSON;
  680. }
  681. }
  682. }
  683. };
  684.  
  685. CLoginPromptManager.prototype.SubmitAuthCode = function()
  686. {
  687. if ( !v_trim( $J('#authcode').val() ).length )
  688. return;
  689.  
  690. $J('#auth_details_computer_name').css('color', '85847f' ); //TODO
  691. $J('#auth_buttonsets').children().hide();
  692. $J('#auth_buttonset_waiting').show();
  693.  
  694. this.$LogonFormElement( 'loginfriendlyname' ).val( $J('#friendlyname').val() );
  695. this.$LogonFormElement( 'emailauth' ).val( $J('#authcode').val() );
  696.  
  697. this.DoLogin();
  698. };
  699.  
  700. CLoginPromptManager.prototype.SetEmailAuthModalState = function( step )
  701. {
  702. if ( step == 'submit' )
  703. {
  704. this.SubmitAuthCode();
  705. return;
  706. }
  707. else if ( step == 'complete' )
  708. {
  709. this.OnEmailAuthSuccessContinue();
  710. return;
  711. }
  712.  
  713. $J('#auth_messages').children().hide();
  714. $J('#auth_message_' + step ).show();
  715.  
  716. $J('#auth_details_messages').children().hide();
  717. $J('#auth_details_' + step ).show();
  718.  
  719. $J('#auth_buttonsets').children().hide();
  720. $J('#auth_buttonset_' + step ).show();
  721.  
  722. $J('#authcode_help_supportlink').hide();
  723.  
  724. var icon='key';
  725. var bShowAuthcodeEntry = true;
  726. if ( step == 'entercode' )
  727. {
  728. icon = 'mail';
  729. }
  730. else if ( step == 'checkspam' )
  731. {
  732. icon = 'trash';
  733. }
  734. else if ( step == 'success' )
  735. {
  736. icon = 'unlock';
  737. bShowAuthcodeEntry = false;
  738. $J('#success_continue_btn').focus();
  739. this.m_EmailAuthModal.SetDismissOnBackgroundClick( true );
  740. this.m_EmailAuthModal.always( $J.proxy( this.LoginComplete, this ) );
  741. }
  742. else if ( step == 'incorrectcode' )
  743. {
  744. icon = 'lock';
  745. }
  746. else if ( step == 'help' )
  747. {
  748. icon = 'steam';
  749. bShowAuthcodeEntry = false;
  750. $J('#authcode_help_supportlink').show();
  751. }
  752.  
  753. if ( bShowAuthcodeEntry )
  754. {
  755. var $AuthcodeEntry = $J('#authcode_entry');
  756. if ( !$AuthcodeEntry.is(':visible') )
  757. {
  758. $AuthcodeEntry.show().find('input').focus();
  759. }
  760. $J('#auth_details_computer_name').show();
  761. }
  762. else
  763. {
  764. $J('#authcode_entry').hide();
  765. $J('#auth_details_computer_name').hide();
  766. }
  767.  
  768. $J('#auth_icon').attr('class', 'auth_icon auth_icon_' + icon );
  769. };
  770.  
  771. CLoginPromptManager.prototype.StartTwoFactorAuthProcess = function()
  772. {
  773. this.m_bInTwoFactorAuthProcess = true;
  774. this.SetTwoFactorAuthModalState( 'entercode' );
  775.  
  776. var _this = this;
  777. this.m_TwoFactorModal = ShowDialog( 'Mobiele Steam Guard-authenticatie', this.m_$ModalTwoFactor.show() )
  778. .fail( function() { _this.CancelTwoFactorAuthProcess(); } )
  779. .always( function() {
  780. $J(document.body).append( _this.m_$ModalTwoFactor.hide() );
  781. _this.m_bInTwoFactorAuthProcess = false;
  782. _this.m_TwoFactorModal = null;
  783. } );
  784.  
  785. this.m_TwoFactorModal.SetDismissOnBackgroundClick( false );
  786. this.m_TwoFactorModal.SetRemoveContentOnDismissal( false );
  787.  
  788. $J('#twofactorcode_entry').focus();
  789. };
  790.  
  791.  
  792. CLoginPromptManager.prototype.CancelTwoFactorAuthProcess = function()
  793. {
  794. this.m_bInTwoFactorAuthProcess = false;
  795.  
  796. if ( this.m_bTwoFactorAuthSuccessful )
  797. this.LoginComplete();
  798. else
  799. this.ClearLoginForm();
  800. };
  801.  
  802.  
  803. CLoginPromptManager.prototype.OnTwoFactorResetOptionsResponse = function( results )
  804. {
  805. if ( results.success && results.options.sms.allowed )
  806. {
  807. this.m_sPhoneNumberLastDigits = results.options.sms.last_digits;
  808. this.SetTwoFactorAuthModalState( 'selfhelp_sms_remove' ); // Or reset if this.m_bTwoFactorReset
  809. }
  810. else if ( results.success )
  811. {
  812. this.SetTwoFactorAuthModalState( 'selfhelp_nosms' );
  813. }
  814. else
  815. {
  816. this.SetTwoFactorAuthModalState( 'selfhelp_failure' );
  817. $J( '#login_twofactorauth_details_selfhelp_failure' ).text( results.message );
  818. }
  819. };
  820.  
  821.  
  822. CLoginPromptManager.prototype.OnTwoFactorRecoveryFailure = function()
  823. {
  824. this.SetTwoFactorAuthModalState( 'selfhelp_failure' );
  825. $J( '#login_twofactorauth_details_selfhelp_failure' ).text( '' ); // v0v
  826. };
  827.  
  828.  
  829. CLoginPromptManager.prototype.OnStartRemoveTwoFactorResponse = function( results )
  830. {
  831. if ( results.success )
  832. {
  833. this.SetTwoFactorAuthModalState( 'selfhelp_sms_remove_entercode' );
  834. }
  835. else
  836. {
  837. this.SetTwoFactorAuthModalState( 'selfhelp_failure' );
  838. $J( '#login_twofactorauth_details_selfhelp_failure' ).text( results.message );
  839. }
  840. };
  841.  
  842.  
  843. CLoginPromptManager.prototype.OnRemoveTwoFactorResponse = function( results )
  844. {
  845. if ( results.success )
  846. {
  847. if ( this.m_bTwoFactorReset )
  848. {
  849. if ( this.m_bIsMobileSteamClient && !this.m_bMobileClientSupportsPostMessage )
  850. this.RunLocalURL( "steammobile://steamguard?op=setsecret&arg1=" + results.replacement_token );
  851.  
  852. this.SetTwoFactorAuthModalState( 'selfhelp_twofactor_replaced' );
  853. }
  854. else
  855. {
  856. this.SetTwoFactorAuthModalState( 'selfhelp_twofactor_removed' );
  857. }
  858. }
  859. else if ( results.retry )
  860. {
  861. this.SetTwoFactorAuthModalState( 'selfhelp_sms_remove_incorrectcode' );
  862. }
  863. else
  864. {
  865. this.SetTwoFactorAuthModalState( 'selfhelp_failure' );
  866. $J( '#login_twofactorauth_details_selfhelp_failure' ).text( results.message );
  867. }
  868. };
  869.  
  870.  
  871. CLoginPromptManager.prototype.OnUseTwoFactorRecoveryCodeResponse = function( results )
  872. {
  873. if ( results.success )
  874. {
  875. this.SetTwoFactorAuthModalState( 'selfhelp_twofactor_removed' );
  876. }
  877. else if ( results.retry )
  878. {
  879. $J( '#login_twofactorauth_details_selfhelp_rcode_incorrectcode' ).text( results.message );
  880. this.SetTwoFactorAuthModalState( 'selfhelp_rcode_incorrectcode' );
  881. }
  882. else if ( results.exhausted )
  883. {
  884. $J( '#login_twofactorauth_details_selfhelp_rcode_incorrectcode_exhausted' ).text( results.message );
  885. this.SetTwoFactorAuthModalState( 'selfhelp_rcode_incorrectcode_exhausted' );
  886. }
  887. else
  888. {
  889. this.SetTwoFactorAuthModalState( 'selfhelp_failure' );
  890. $J( '#login_twofactorauth_details_selfhelp_failure' ).text( results.message );
  891. }
  892. };
  893.  
  894.  
  895. CLoginPromptManager.prototype.OnTwoFactorAuthSuccessContinue = function()
  896. {
  897. if ( !this.m_bIsMobile )
  898. {
  899. $J('#login_twofactorauth_buttonsets').children().hide();
  900. $J('#login_twofactorauth_buttonset_waiting').show();
  901. }
  902.  
  903. if ( this.m_bLoginTransferInProgress )
  904. {
  905. this.m_bTwoFactorAuthSuccessfulWantToLeave = true;
  906. }
  907. else
  908. {
  909. this.LoginComplete();
  910. }
  911. };
  912.  
  913. CLoginPromptManager.prototype.SetTwoFactorAuthModalState = function( step )
  914. {
  915. if ( step == 'submit' )
  916. {
  917. $J('#login_twofactor_authcode_entry').hide();
  918. this.SubmitTwoFactorCode();
  919. return;
  920. }
  921. else if ( step == 'success' )
  922. {
  923. this.OnTwoFactorAuthSuccessContinue();
  924. return;
  925. }
  926.  
  927. $J('#login_twofactorauth_messages').children().hide();
  928. $J('#login_twofactorauth_message_' + step ).show();
  929.  
  930. $J('#login_twofactorauth_details_messages').children().hide();
  931. $J('#login_twofactorauth_details_' + step ).show();
  932.  
  933. $J('#login_twofactorauth_buttonsets').children().hide();
  934. $J('#login_twofactorauth_buttonset_' + step ).show();
  935.  
  936. $J('#login_twofactor_authcode_help_supportlink').hide();
  937.  
  938. var icon = 'key';
  939. if ( step == 'entercode' )
  940. {
  941. icon = 'phone';
  942. $J('#login_twofactor_authcode_entry').show();
  943. $J('#twofactorcode_entry').val('');
  944. $J('#login_twofactorauth_message_entercode_accountname').text( this.m_strUsernameEntered );
  945. $J('#twofactorcode_entry').focus();
  946. }
  947. else if ( step == 'incorrectcode' )
  948. {
  949. icon = 'lock';
  950. $J('#login_twofactor_authcode_entry').show();
  951. $J('#twofactorcode_entry').val('');
  952. $J('#twofactorcode_entry').focus();
  953. }
  954. else if ( step == 'selfhelp' )
  955. {
  956. icon = 'steam';
  957. $J('#login_twofactor_authcode_entry').hide();
  958.  
  959. if ( !this.m_bIsMobileSteamClient
  960. || this.BIsAndroid() && !this.BIsUserInMobileClientVersionOrNewer( 2, 0, 32 )
  961. || this.BIsIos() && !this.BIsUserInMobileClientVersionOrNewer( 2, 0, 0 )
  962. // no version minimum for Windows phones
  963. )
  964. {
  965. $J( '#login_twofactorauth_buttonset_selfhelp div[data-modalstate=selfhelp_sms_reset_start]' ).hide();
  966. }
  967. }
  968. else if ( step == 'selfhelp_sms_remove_start' || step == 'selfhelp_sms_reset_start' )
  969. {
  970. icon = 'steam';
  971. $J('#login_twofactor_authcode_entry').hide();
  972.  
  973. $J('#login_twofactorauth_messages').children().hide();
  974. $J('#login_twofactorauth_details_messages').children().hide();
  975.  
  976. $J('#login_twofactorauth_buttonsets').children().hide();
  977. $J('#login_twofactorauth_buttonset_waiting').show();
  978.  
  979. this.m_bTwoFactorReset = (step == 'selfhelp_sms_reset_start');
  980.  
  981. $J.post( this.m_strBaseURL + 'getresetoptions/', this.GetParameters( {} ) )
  982. .done( $J.proxy( this.OnTwoFactorResetOptionsResponse, this ) )
  983. .fail( $J.proxy( this.OnTwoFactorRecoveryFailure, this ) );
  984. }
  985. else if ( step == 'selfhelp_sms_remove' )
  986. {
  987. icon = 'steam';
  988. $J('#login_twofactorauth_selfhelp_sms_remove_last_digits').text( this.m_sPhoneNumberLastDigits );
  989. }
  990. else if ( step == 'selfhelp_sms_remove_sendcode' )
  991. {
  992. icon = 'steam';
  993. $J('#login_twofactor_authcode_entry').hide();
  994.  
  995. $J('#login_twofactorauth_messages').children().hide();
  996. $J('#login_twofactorauth_details_messages').children().hide();
  997.  
  998. $J('#login_twofactorauth_buttonsets').children().hide();
  999. $J('#login_twofactorauth_buttonset_waiting').show();
  1000.  
  1001. $J.post( this.m_strBaseURL + 'startremovetwofactor/', this.GetParameters( {} ) )
  1002. .done( $J.proxy( this.OnStartRemoveTwoFactorResponse, this ) )
  1003. .fail( $J.proxy( this.OnTwoFactorRecoveryFailure, this ) );
  1004. }
  1005. else if ( step == 'selfhelp_sms_remove_entercode' )
  1006. {
  1007. $J('#login_twofactorauth_selfhelp_sms_remove_entercode_last_digits').text( this.m_sPhoneNumberLastDigits );
  1008.  
  1009. $J('#login_twofactor_authcode_entry').show();
  1010. $J('#twofactorcode_entry').val('');
  1011. $J('#twofactorcode_entry').focus();
  1012. }
  1013. else if ( step == 'selfhelp_sms_remove_checkcode' )
  1014. {
  1015. $J('#login_twofactor_authcode_entry').hide();
  1016.  
  1017. $J('#login_twofactorauth_messages').children().hide();
  1018. $J('#login_twofactorauth_details_messages').children().hide();
  1019.  
  1020. $J('#login_twofactorauth_buttonsets').children().hide();
  1021. $J('#login_twofactorauth_buttonset_waiting').show();
  1022.  
  1023. // Immediately skip to incorrect code step without actually checking it if the user forgot to enter a code.
  1024. if ( $J('#twofactorcode_entry').val().length == 0 )
  1025. {
  1026. this.SetTwoFactorAuthModalState( 'selfhelp_sms_remove_incorrectcode' );
  1027. }
  1028. else
  1029. {
  1030. var rgParameters = {
  1031. smscode: $J( '#twofactorcode_entry' ).val(),
  1032. reset: this.m_bTwoFactorReset ? 1 : 0
  1033. };
  1034.  
  1035. $J.post( this.m_strBaseURL + 'removetwofactor/', this.GetParameters( rgParameters ) )
  1036. .done( $J.proxy( this.OnRemoveTwoFactorResponse, this ) )
  1037. .fail( $J.proxy( this.OnTwoFactorRecoveryFailure, this ) );
  1038. }
  1039. }
  1040. else if ( step == 'selfhelp_sms_remove_incorrectcode' )
  1041. {
  1042. icon = 'lock';
  1043. $J('#login_twofactor_authcode_entry').show();
  1044. $J('#twofactorcode_entry').focus();
  1045. }
  1046. else if ( step == 'selfhelp_twofactor_removed' )
  1047. {
  1048. icon = 'unlock';
  1049. $J('#twofactorcode_entry').val(''); // Make sure the next login doesn't supply a code
  1050. }
  1051. else if ( step == 'selfhelp_twofactor_replaced' )
  1052. {
  1053. icon = 'steam';
  1054. $J('#twofactorcode_entry').val('');
  1055. }
  1056. else if ( step == 'selfhelp_sms_remove_complete' )
  1057. {
  1058. this.m_TwoFactorModal.Dismiss();
  1059. this.m_bInTwoFactorAuthProcess = false;
  1060. this.DoLogin();
  1061. }
  1062. else if ( step == 'selfhelp_nosms' )
  1063. {
  1064. icon = 'steam';
  1065. $J('#login_twofactor_authcode_entry').hide();
  1066. }
  1067. else if ( step == 'selfhelp_rcode' )
  1068. {
  1069. $J('#login_twofactor_authcode_entry').show();
  1070. $J('#twofactorcode_entry').val('');
  1071. $J('#twofactorcode_entry').focus();
  1072. }
  1073. else if ( step == 'selfhelp_rcode_checkcode' )
  1074. {
  1075. $J('#login_twofactor_authcode_entry').hide();
  1076.  
  1077. $J('#login_twofactorauth_messages').children().hide();
  1078. $J('#login_twofactorauth_details_messages').children().hide();
  1079.  
  1080. $J('#login_twofactorauth_buttonsets').children().hide();
  1081. $J('#login_twofactorauth_buttonset_waiting').show();
  1082.  
  1083. // Immediately skip to incorrect code step without actually checking it if the user forgot to enter a code.
  1084. if ( $J('#twofactorcode_entry').val().length == 0 )
  1085. {
  1086. this.SetTwoFactorAuthModalState( 'selfhelp_rcode_incorrectcode' );
  1087. }
  1088. else
  1089. {
  1090. var rgParameters = { rcode: $J( '#twofactorcode_entry' ).val() };
  1091.  
  1092. $J.post( this.m_strBaseURL + 'userecoverycode/', this.GetParameters( rgParameters ) )
  1093. .done( $J.proxy( this.OnUseTwoFactorRecoveryCodeResponse, this ) )
  1094. .fail( $J.proxy( this.OnTwoFactorRecoveryFailure, this ) );
  1095. }
  1096. }
  1097. else if ( step == 'selfhelp_rcode_incorrectcode' )
  1098. {
  1099. icon = 'lock';
  1100. $J('#login_twofactor_authcode_entry').show();
  1101. $J('#twofactorcode_entry').focus();
  1102. }
  1103. else if ( step == 'selfhelp_couldnthelp' )
  1104. {
  1105. icon = 'steam';
  1106. $J('#login_twofactor_authcode_entry').hide();
  1107. }
  1108. else if ( step == 'help' )
  1109. {
  1110. icon = 'steam';
  1111. $J('#login_twofactor_authcode_entry').hide();
  1112. $J('#login_twofactor_authcode_help_supportlink').show();
  1113. }
  1114. else if ( step == 'selfhelp_failure' )
  1115. {
  1116. icon = 'steam';
  1117. }
  1118.  
  1119. if ( this.m_bInTwoFactorAuthProcess && this.m_TwoFactorModal )
  1120. {
  1121. this.m_TwoFactorModal.AdjustSizing();
  1122. }
  1123.  
  1124. $J('#login_twofactorauth_icon').attr( 'class', 'auth_icon auth_icon_' + icon );
  1125. };
  1126.  
  1127. CLoginPromptManager.prototype.SubmitTwoFactorCode = function()
  1128. {
  1129. this.m_sAuthCode = $J('#twofactorcode_entry').val();
  1130.  
  1131.  
  1132. $J('#login_twofactorauth_messages').children().hide();
  1133. $J('#login_twofactorauth_details_messages').children().hide();
  1134.  
  1135. $J('#login_twofactorauth_buttonsets').children().hide();
  1136. $J('#login_twofactorauth_buttonset_waiting').show();
  1137.  
  1138. this.DoLogin();
  1139. };
  1140.  
  1141. CLoginPromptManager.sm_$Modals = null; // static
  1142. CLoginPromptManager.prototype.InitModalContent = function()
  1143. {
  1144.  
  1145. var $modals = $J('#loginModals');
  1146. if ( $modals.length == 0 )
  1147. {
  1148. // This does not work on Android 2.3, nor does creating the DOM node and
  1149. // setting innerHTML without jQuery. So on the mobile login page, we put
  1150. // the modals into the page directly, but not all pages have that.
  1151. CLoginPromptManager.sm_$Modals = $J( "<div id=\"loginModals\">\r\n\t<div class=\"login_modal loginAuthCodeModal\" style=\"display: none\">\r\n\t\t<form data-ajax=\"false\">\r\n\t\t\t<div class=\"auth_message_area\">\r\n\t\t\t\t<div id=\"auth_icon\" class=\"auth_icon auth_icon_key\">\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_messages\" id=\"auth_messages\">\r\n\t\t\t\t\t<div class=\"auth_message\" id=\"auth_message_entercode\" style=\"display: none;\">\r\n\t\t\t\t\t\t<div class=\"auth_modal_h1\">Hallo!<\/div>\r\n\t\t\t\t\t\t<p>We zien dat je inlogt bij Steam vanaf een nieuwe browser of een nieuwe computer. Of misschien is het gewoon al een tijdje geleden...<\/p>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div class=\"auth_message\" id=\"auth_message_checkspam\" style=\"display: none;\">\r\n\t\t\t\t\t\t<div class=\"auth_modal_h1\">Verkeerd gemarkeerd als spam?<\/div>\r\n\t\t\t\t\t\t<p>Heb je in je spam-map gekeken? Als je geen recent bericht van Steam Support in je inbox ziet, probeer dan daar te kijken.<\/p>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div class=\"auth_message\" id=\"auth_message_success\" style=\"display: none;\">\r\n\t\t\t\t\t\t<div class=\"auth_modal_h1\">Gelukt!<\/div>\r\n\t\t\t\t\t\t<p>Je hebt hier nu toegang tot je Steam-account.<\/p>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div class=\"auth_message\" id=\"auth_message_incorrectcode\" style=\"display: none;\">\r\n\t\t\t\t\t\t<div class=\"auth_modal_h1\">Oeps!<\/div>\r\n\t\t\t\t\t\t<p>Sorry, <br>maar dat is niet helemaal juist...<\/p>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div class=\"auth_message\" id=\"auth_message_help\" style=\"display: none;\">\r\n\t\t\t\t\t\t<div class=\"auth_modal_h1\">Laat ons helpen!<\/div>\r\n\t\t\t\t\t\t<p>Vervelend om te horen dat je problemen ondervindt. We weten dat je Steam-account waardevol is en we zetten ons ervoor in om de toegang hiertoe in de juiste handen te houden.<\/p>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div id=\"auth_details_messages\" class=\"auth_details_messages\">\r\n\t\t\t\t<div class=\"auth_details\" id=\"auth_details_entercode\" style=\"display: none;\">\r\n\t\t\t\t\tAls een extra beveiligingsmaatregel, dien je toegang via deze browser toe te staan door de speciale code in te voeren die we zojuist naar je e-mailadres <span id=\"emailauth_entercode_emaildomain\"><\/span> hebben verstuurd.\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_details\" id=\"auth_details_success\" style=\"display: none;\">\r\n\t\t\t\t\tAls dit een openbare computer is, denk er dan aan om je bij Steam af te melden wanneer je deze browsersessie be\u00ebindigt.\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_details\" id=\"auth_details_help\" style=\"display: none;\">\r\n\t\t\t\t\tNeem contact op met Steam Support voor assistentie van een van onze medewerkers. Legitieme oproepen voor hulp met accounttoegang hebben onze hoogste prioriteit.\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"authcode_entry_area\">\r\n\t\t\t\t<div id=\"authcode_entry\">\r\n\t\t\t\t\t<div class=\"authcode_entry_box\">\r\n\t\t\t\t\t\t<input class=\"authcode_entry_input authcode_placeholder\" id=\"authcode\" type=\"text\" value=\"\"\r\n\t\t\t\t\t\t\t placeholder=\"voer hier je code in\">\r\n\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div id=\"authcode_help_supportlink\">\r\n\t\t\t\t\t<a href=\"https:\/\/support.steampowered.com\/kb_article.php?ref=4020-ALZM-5519\" data-ajax=\"false\" data-externallink=\"1\">Neem contact op met Steam Support voor hulp met accounttoegang<\/a>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"modal_buttons\" id=\"auth_buttonsets\">\r\n\t\t\t\t<div class=\"auth_buttonset\" id=\"auth_buttonset_entercode\" style=\"display: none;\">\r\n\t\t\t\t\t<div data-modalstate=\"submit\" class=\"auth_button leftbtn\">\r\n\t\t\t\t\t\t<div class=\"auth_button_h3\">Verzend<\/div>\r\n\t\t\t\t\t\t<div class=\"auth_button_h5\">mijn speciale toegangscode<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div data-modalstate=\"checkspam\" class=\"auth_button\">\r\n\t\t\t\t\t\t<div class=\"auth_button_h3\">Welk bericht?<\/div>\r\n\t\t\t\t\t\t<div class=\"auth_button_h5\">Ik heb helemaal geen bericht van Steam Support...<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div style=\"clear: left;\"><\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_buttonset\" id=\"auth_buttonset_checkspam\" style=\"display: none;\">\r\n\t\t\t\t\t<div data-modalstate=\"submit\" class=\"auth_button leftbtn\">\r\n\t\t\t\t\t\t<div class=\"auth_button_h3\">Gevonden!<\/div>\r\n\t\t\t\t\t\t<div class=\"auth_button_h5\">en ik heb mijn speciale toegangscode hierboven ingevoerd<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div data-modalstate=\"help\" class=\"auth_button\">\r\n\t\t\t\t\t\t<div class=\"auth_button_h3\">Nog geen geluk...<\/div>\r\n\t\t\t\t\t\t<div class=\"auth_button_h5\">Ik heb helemaal geen bericht van Steam Support...<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div style=\"clear: left;\"><\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_buttonset\" id=\"auth_buttonset_success\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_button auth_button_spacer\">\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<a data-modalstate=\"complete\" class=\"auth_button\" id=\"success_continue_btn\" href=\"javascript:void(0);\">\r\n\t\t\t\t\t\t<div class=\"auth_button_h3\">Doorgaan naar Steam!<\/div>\r\n\t\t\t\t\t\t<div class=\"auth_button_h5\">&nbsp;<br>&nbsp;<\/div>\r\n\t\t\t\t\t<\/a>\r\n\t\t\t\t\t<div style=\"clear: left;\"><\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_buttonset\" id=\"auth_buttonset_incorrectcode\" style=\"display: none;\">\r\n\t\t\t\t\t<div data-modalstate=\"submit\" class=\"auth_button leftbtn\">\r\n\t\t\t\t\t\t<div class=\"auth_button_h3\">Ik wil het opnieuw proberen<\/div>\r\n\t\t\t\t\t\t<div class=\"auth_button_h5\">en ik heb mijn speciale toegangscode hierboven opnieuw ingevoerd<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div data-modalstate=\"help\" class=\"auth_button\">\r\n\t\t\t\t\t\t<div class=\"auth_button_h3\">Help alsjeblieft<\/div>\r\n\t\t\t\t\t\t<div class=\"auth_button_h5\">Ik denk dat ik hulp van Steam Support nodig heb...<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div style=\"clear: left;\"><\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_buttonset\" id=\"auth_buttonset_waiting\" style=\"display: none;\">\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div style=\"\" id=\"auth_details_computer_name\" class=\"auth_details_messages\">\r\n\t\t\t\tOm deze browser makkelijk te herkennen in de lijst van apparaten die Steam Guard hebben ingeschakeld, moet je deze browser een naam geven - minimaal 6 tekens lang.\t\t\t\t<div id=\"friendly_name_box\" class=\"friendly_name_box\">\r\n\t\t\t\t\t<input class=\"authcode_entry_input authcode_placeholder\" id=\"friendlyname\" type=\"text\"\r\n\t\t\t\t\t\t placeholder=\"vul een duidelijke naam in\">\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div style=\"display: none;\">\r\n\t\t\t\t<input type=\"submit\">\r\n\t\t\t<\/div>\r\n\t\t<\/form>\r\n\t<\/div>\r\n\r\n\t<div class=\"login_modal loginIPTModal\" style=\"display: none\">\r\n\t\t<div class=\"auth_message_area\">\r\n\t\t\t<div class=\"auth_icon ipt_icon\">\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_messages\">\r\n\t\t\t\t<div class=\"auth_message\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">Sorry<\/div>\r\n\t\t\t\t\t<p>Je kunt op deze computer geen toegang krijgen tot dit account zonder verdere autorisatie.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t<div class=\"auth_details_messages\">\r\n\t\t\t<div class=\"auth_details\">\r\n\t\t\t\tNeem contact op met Steam Support zodat een medewerker van ons je kan assisteren. Legitieme vragen voor hulp met de toegang tot je account hebben onze hoogste prioriteit.\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t<div class=\"authcode_entry_area\">\r\n\t\t<\/div>\r\n\t\t<div class=\"modal_buttons\">\r\n\t\t\t<div class=\"auth_buttonset\" >\r\n\t\t\t\t<a href=\"https:\/\/support.steampowered.com\/kb_article.php?ref=9400-IPAX-9398&auth=e39b5c227cffc8ae65414aba013e5fef\" class=\"auth_button leftbtn\" data-ajax=\"false\" data-externallink=\"1\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">Meer informatie<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">over Intel&reg; Identity Protection Technology<\/div>\r\n\t\t\t\t<\/a>\r\n\t\t\t\t<a href=\"https:\/\/support.steampowered.com\" class=\"auth_button\" data-ajax=\"false\" data-externallink=\"1\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">Help alsjeblieft<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">Ik denk dat ik hulp van Steam Support nodig heb...<\/div>\r\n\t\t\t\t<\/a>\r\n\t\t\t\t<div style=\"clear: left;\"><\/div>\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t<\/div>\r\n\r\n\r\n\r\n\t<div class=\"login_modal loginTwoFactorCodeModal\" style=\"display: none\">\r\n\t\t<form>\r\n\t\t<div class=\"twofactorauth_message_area\">\r\n\t\t\t<div id=\"login_twofactorauth_icon\" class=\"auth_icon auth_icon_key\">\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"twofactorauth_messages\" id=\"login_twofactorauth_messages\">\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_entercode\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">Hallo <span id=\"login_twofactorauth_message_entercode_accountname\"><\/span>!<\/div>\r\n\t\t\t\t\t<p>Dit account gebruikt momenteel een mobiele Steam Guard-authenticator.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_incorrectcode\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">Oeps!<\/div>\r\n\t\t\t\t\t<p>Sorry,<br>maar dat klopt niet helemaal...<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">Laat ons helpen!<\/div>\r\n\t\t\t\t\t<p>Vervelend om te horen dat je problemen ondervindt. We weten dat je Steam-account waardevol is en we zetten ons ervoor in om de toegang hiertoe in de juiste handen te houden.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_sms_remove\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">Eigendom van je account bevestigen<\/div>\r\n\t\t\t\t\t<p>We zullen een sms-bericht met de accountherstelcode versturen naar je telefoonnummer dat eindigt op <span id=\"login_twofactorauth_selfhelp_sms_remove_last_digits\"><\/span>. Zodra je de code invoert zullen we de mobiele authenticator van je account verwijderen en zul je Steam Guard-codes via je e-mail ontvangen.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_sms_remove_entercode\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">Eigendom van je account bevestigen<\/div>\r\n\t\t\t\t\t<p>We hebben een sms-bericht met de bevestigingscode verstuurd naar je telefoonnummer dat eindigt op <span id=\"login_twofactorauth_selfhelp_sms_remove_entercode_last_digits\"><\/span>. Voer de code hieronder in zodat we de mobiele authenticator van je account kunnen verwijderen.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_sms_remove_incorrectcode\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">Oeps!<\/div>\r\n\t\t\t\t\t<p>Sorry,<br>maar dat klopt niet helemaal...<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_twofactor_removed\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">Gelukt!<\/div>\r\n\t\t\t\t\t<p>We hebben de Mobile-authenticator van je account verwijderd. Als je de volgende keer inlogt zul je een Steam Guard-code moeten invoeren die naar je e-mailadres wordt verstuurd.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_twofactor_replaced\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">Gelukt!<\/div>\r\n\t\t\t\t\t<p>Je kunt dit apparaat nu gebruiken om Mobile-authenticatorcodes voor je account te krijgen. Andere apparaten die voordien je account van authenticatorcodes voorzagen kunnen dit niet meer doen.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_nosms\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">Heb je de herstelcode?<\/div>\r\n\t\t\t\t\t<p>Er is geen telefoonnummer aan je Steam-account gekoppeld, dus we kunnen het eigendom van je account niet via een sms-bericht bevestigen. Heb je de herstelcode die je hebt opgeschreven toen je de mobiele authenticator toevoegde? De herstelcode begint met de letter 'R'.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_rcode\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">Voer je herstelcode in<\/div>\r\n\t\t\t\t\t<p>Vul de herstelcode in het vak hieronder in. De herstelcode begint met de letter 'R'.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_rcode_incorrectcode\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">Oeps!<\/div>\r\n\t\t\t\t\t<p>Sorry,<br>maar dat klopt niet helemaal...<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_rcode_incorrectcode_exhausted\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">Oeps!<\/div>\r\n\t\t\t\t\t<p>Sorry,<br>maar dat klopt niet helemaal...<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_rcode_message\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">Oeps!<\/div>\r\n\t\t\t\t\t<p>Sorry,<br>maar dat klopt niet helemaal...<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_couldnthelp\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">Laat ons helpen!<\/div>\r\n\t\t\t\t\t<p>Indien je de toegang bent kwijtgeraakt tot je mobiele apparaat, het mobiele telefoonnummer dat aan je account is gekoppeld, en de herstelcode die je had opgeschreven toen je de mobiele authenticator toevoegde, dan verzoeken we je contact op te nemen met Steam Support om de toegang tot je account te herstellen.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_help\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">Laat ons helpen!<\/div>\r\n\t\t\t\t\t<p>Vervelend om te horen dat je problemen ondervindt. We weten dat je Steam-account waardevol is en we zetten ons ervoor in om de toegang hiertoe in de juiste handen te houden.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_failure\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">Sorry!<\/div>\r\n\t\t\t\t\t<p>Er is een fout opgetreden bij het verwerken van je verzoek.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t<div id=\"login_twofactorauth_details_messages\" class=\"twofactorauth_details_messages\">\r\n\t\t\t<div class=\"twofactorauth_details\" id=\"login_twofactorauth_details_entercode\" style=\"display: none;\">\r\n\t\t\t\tVoer de code in die momenteel in de mobiele Steam-app wordt weergegeven:\t\t\t<\/div>\r\n\t\t\t<div class=\"twofactorauth_details\" id=\"login_twofactorauth_details_selfhelp\" style=\"display: none;\">\r\n\t\t\t\tIndien je je mobiele apparaat bent kwijtgeraakt of de Steam-app hebt verwijderd en je niet langer codes kunt ontvangen, kun je de mobiele authenticator van je account verwijderen. Dit zal de veiligheid van je account verminderen, dus het wordt aanbevolen om daarna een mobiele authenticator aan een nieuw mobiel apparaat toe te voegen.\t\t\t<\/div>\r\n\t\t\t<div class=\"twofactorauth_details\" id=\"login_twofactorauth_details_help\" style=\"display: none;\">\r\n\t\t\t\tNeem contact op met Steam Support om hulp te krijgen van een van onze medewerkers.\t\t\t<\/div>\r\n\t\t\t<div class=\"twofactorauth_details\" id=\"login_twofactorauth_details_selfhelp_failure\" style=\"display: none;\">\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"twofactorauth_details\" id=\"login_twofactorauth_details_selfhelp_rcode_incorrectcode\" style=\"display: none;\">\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"twofactorauth_details\" id=\"login_twofactorauth_details_selfhelp_rcode_incorrectcode_exhausted\" style=\"display: none;\">\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t<div class=\"twofactorauthcode_entry_area\">\r\n\t\t\t<div id=\"login_twofactor_authcode_entry\">\r\n\t\t\t\t<div class=\"twofactorauthcode_entry_box\">\r\n\t\t\t\t\t<input class=\"twofactorauthcode_entry_input authcode_placeholder\" id=\"twofactorcode_entry\" type=\"text\"\r\n\t\t\t\t\t\t placeholder=\"vul hier je code in\" autocomplete=\"off\">\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div id=\"login_twofactor_authcode_help_supportlink\">\r\n\t\t\t\t<a href=\"https:\/\/support.steampowered.com\/kb_article.php?ref=4020-ALZM-5519\">\r\n\t\t\t\t\tNeem contact op met Steam Support voor hulp bij toegang tot je account\t\t\t\t<\/a>\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t<div class=\"modal_buttons\" id=\"login_twofactorauth_buttonsets\">\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_entercode\" style=\"display: none;\">\r\n\t\t\t\t<div type=\"submit\" class=\"auth_button leftbtn\" data-modalstate=\"submit\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">Mijn code<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">verzenden<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_button\" data-modalstate=\"selfhelp\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">Help mij<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">Ik heb geen toegang meer tot mijn codes van de mobiele authenticator<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div style=\"clear: left;\"><\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_incorrectcode\" style=\"display: none;\">\r\n\t\t\t\t<div class=\"auth_button leftbtn\" data-modalstate=\"submit\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">Ik wil het opnieuw proberen<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">en ik heb hierboven mijn authenticatorcode opnieuw ingevoerd<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_button\" data-modalstate=\"selfhelp\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">Help mij<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">Ik denk dat ik hulp nodig heb van Steam Support...<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div style=\"clear: left;\"><\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_selfhelp\" style=\"display: none;\">\r\n\t\t\t\t<div class=\"auth_button leftbtn\" data-modalstate=\"selfhelp_sms_remove_start\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\" style=\"font-size: 16px;\">Authenticator verwijderen<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">en ga terug naar het ontvangen van codes via e-mail<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_button\" data-modalstate=\"selfhelp_sms_reset_start\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">Dit apparaat gebruiken<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">en authenticatorcodes via deze app ontvangen<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_selfhelp_sms_remove\" style=\"display: none;\">\r\n\t\t\t\t<div class=\"auth_button leftbtn\" data-modalstate=\"selfhelp_sms_remove_sendcode\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">OK!<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">Stuur me het sms-bericht<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_button\" data-modalstate=\"selfhelp_nosms\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">Dat kan niet<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">omdat ik niet langer toegang tot dat telefoonnummer heb<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_selfhelp_sms_remove_entercode\" style=\"display: none;\">\r\n\t\t\t\t<div class=\"auth_button leftbtn\" data-modalstate=\"selfhelp_sms_remove_checkcode\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">Mijn code<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">Ik heb de code hierboven ingevoerd<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_button\" data-modalstate=\"selfhelp_nosms\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">Ik heb hulp nodig<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">Ik ontvang het sms-bericht niet<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_selfhelp_sms_remove_incorrectcode\" style=\"display: none;\">\r\n\t\t\t\t<div class=\"auth_button leftbtn\" data-modalstate=\"selfhelp_sms_remove_checkcode\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">Mijn code<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">Ik heb de code opnieuw ingevoerd. Laten we het opnieuw proberen.<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_button\" data-modalstate=\"selfhelp_nosms\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">Ik heb hulp nodig<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">Ik ontvang het sms-bericht niet<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_selfhelp_twofactor_removed\" style=\"display: none;\">\r\n\t\t\t\t<div class=\"auth_button leftbtn\" data-modalstate=\"selfhelp_sms_remove_complete\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">Inloggen<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">zonder de mobiele authenticator<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_selfhelp_twofactor_replaced\" style=\"display: none;\">\r\n\t\t\t\t<div class=\"auth_button leftbtn\" data-modalstate=\"selfhelp_sms_remove_complete\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">Inloggen<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">naar de Steam Mobile-app<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_selfhelp_nosms\" style=\"display: none;\">\r\n\t\t\t\t<div class=\"auth_button leftbtn\" data-modalstate=\"selfhelp_rcode\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">Ja<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">Ik heb de herstelcode die begint met 'R'<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_button\" data-modalstate=\"selfhelp_couldnthelp\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">Nee<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">Ik heb zo'n code niet<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_selfhelp_rcode\" style=\"display: none;\">\r\n\t\t\t\t<div class=\"auth_button leftbtn\" data-modalstate=\"selfhelp_rcode_checkcode\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">Verzenden<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">mijn herstelcode<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_button\" data-modalstate=\"selfhelp_couldnthelp\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">Ik heb hulp nodig<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">Ik denk dat ik hulp van Steam Support nodig heb...<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_selfhelp_rcode_incorrectcode\" style=\"display: none;\">\r\n\t\t\t\t<div class=\"auth_button leftbtn\" data-modalstate=\"selfhelp_rcode_checkcode\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">Verzenden<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">Ik heb de code opnieuw ingevoerd. Laten we het opnieuw proberen.<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_button\" data-modalstate=\"selfhelp_couldnthelp\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">Ik heb hulp nodig<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">Ik denk dat ik hulp van Steam Support nodig heb...<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_selfhelp_rcode_incorrectcode_exhausted\" style=\"display: none;\">\r\n\t\t\t\t<div class=\"auth_button\" data-modalstate=\"selfhelp_couldnthelp\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">Ik heb hulp nodig<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">Ik denk dat ik hulp van Steam Support nodig heb...<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_selfhelp_couldnthelp\" style=\"display: none;\">\r\n\t\t\t\t<a class=\"auth_button leftbtn\" href=\"https:\/\/help.steampowered.com\/\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">Contact opnemen<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">voor hulp met toegang tot je account<\/div>\r\n\t\t\t\t<\/a>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_waiting\" style=\"display: none;\">\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t<div style=\"display: none;\">\r\n\t\t\t<input type=\"submit\">\r\n\t\t<\/div>\r\n\t\t<\/form>\r\n\t<\/div>\r\n<\/div>\r\n" );
  1152. $J('body').append( CLoginPromptManager.sm_$Modals );
  1153. }
  1154. else
  1155. {
  1156. CLoginPromptManager.sm_$Modals = $modals;
  1157. }
  1158. };
  1159.  
  1160. CLoginPromptManager.prototype.GetModalContent = function( strModalType )
  1161. {
  1162. var $ModalContent = CLoginPromptManager.sm_$Modals.find( '.login_modal.' + strModalType );
  1163.  
  1164. if ( this.m_bIsMobileSteamClient )
  1165. {
  1166. var manager = this;
  1167. $ModalContent.find('a[data-externallink]' ).each( function() {
  1168. if ( !manager.m_bMobileClientSupportsPostMessage )
  1169. $J(this).attr( 'href', 'steammobile://openexternalurl?url=' + $J(this).attr('href') );
  1170. else
  1171. $J(this).on('click', function( e ) {
  1172. e.preventDefault();
  1173. window.postMessage( JSON.stringify( {action: "openexternalurl", url: $J(this).attr('href') } ), window.location );
  1174. });
  1175. });
  1176. }
  1177.  
  1178. return $ModalContent;
  1179. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement