includes/clientside/static/login.js
changeset 718 12485b1d41fd
parent 699 c7d737202d59
child 728 067a6173820c
equal deleted inserted replaced
717:236360cf79a0 718:12485b1d41fd
    70 
    70 
    71 var AJAX_STATUS_LOADING_KEY = 1;
    71 var AJAX_STATUS_LOADING_KEY = 1;
    72 var AJAX_STATUS_GENERATING_KEY = 2;
    72 var AJAX_STATUS_GENERATING_KEY = 2;
    73 var AJAX_STATUS_LOGGING_IN = 3;
    73 var AJAX_STATUS_LOGGING_IN = 3;
    74 var AJAX_STATUS_SUCCESS = 4;
    74 var AJAX_STATUS_SUCCESS = 4;
       
    75 var AJAX_STATUS_ERROR = 5;
    75 var AJAX_STATUS_DESTROY = 65535;
    76 var AJAX_STATUS_DESTROY = 65535;
    76 
    77 
    77 /**
    78 /**
    78  * State constants
    79  * State constants
    79  * @var int
    80  * @var int
   294       div.appendChild(img);
   295       div.appendChild(img);
   295       
   296       
   296       // Insert the entire message into the login window
   297       // Insert the entire message into the login window
   297       logindata.mb_inner.innerHTML = '';
   298       logindata.mb_inner.innerHTML = '';
   298       logindata.mb_inner.appendChild(div);
   299       logindata.mb_inner.appendChild(div);
       
   300       
       
   301       break;
       
   302       
       
   303     case AJAX_STATUS_ERROR:
       
   304       // Create the status div
       
   305       var div = document.createElement('div');
       
   306       div.id = 'ajax_login_status';
       
   307       div.style.marginTop = '10px';
       
   308       div.style.textAlign = 'center';
       
   309       
       
   310       // The circly ball ajaxy image + status message
       
   311       var status_msg = $lang.get('user_login_ajax_err_crypto');
       
   312       
       
   313       // Insert the status message
       
   314       div.appendChild(document.createTextNode(status_msg));
       
   315       
       
   316       // Append a br or two to space things properly
       
   317       div.appendChild(document.createElement('br'));
       
   318       div.appendChild(document.createElement('br'));
       
   319       
       
   320       var img = document.createElement('img');
       
   321       img.src = ( ajax_login_successimg_path ) ? ajax_login_successimg_path : scriptPath + '/images/checkbad.png';
       
   322       div.appendChild(img);
       
   323       
       
   324       // Append a br or two to space things properly
       
   325       div.appendChild(document.createElement('br'));
       
   326       div.appendChild(document.createElement('br'));
       
   327       
       
   328       // The circly ball ajaxy image + status message
       
   329       var detail_msg = $lang.get('user_login_ajax_err_crypto_details');
       
   330       var full_link = $lang.get('user_login_ajax_err_crypto_link');
       
   331       var link = document.createElement('a');
       
   332       link.href = makeUrlNS('Special', 'Login/' + title);
       
   333       link.appendChild(document.createTextNode(full_link));
       
   334       var span = document.createElement('span');
       
   335       span.style.fontSize = 'smaller';
       
   336       
       
   337       // Insert the message
       
   338       span.appendChild(document.createTextNode(detail_msg + ' '));
       
   339       span.appendChild(link);
       
   340       div.appendChild(span);
       
   341       
       
   342       // Insert the entire message into the login window
       
   343       logindata.mb_inner.innerHTML = '';
       
   344       logindata.mb_inner.appendChild(div);
       
   345       
       
   346       break;
   299       
   347       
   300     case AJAX_STATUS_DESTROY:
   348     case AJAX_STATUS_DESTROY:
   301     case null:
   349     case null:
   302     case undefined:
   350     case undefined:
   303       logindata.showing_status = false;
   351       logindata.showing_status = false;
   586     lbl_dh.style.display = 'block';
   634     lbl_dh.style.display = 'block';
   587     lbl_dh.style.textAlign = 'center';
   635     lbl_dh.style.textAlign = 'center';
   588     lbl_dh.innerHTML = $lang.get('user_login_ajax_check_dh_ie');
   636     lbl_dh.innerHTML = $lang.get('user_login_ajax_check_dh_ie');
   589     form.appendChild(lbl_dh);
   637     form.appendChild(lbl_dh);
   590   }
   638   }
       
   639   else if ( !data.allow_diffiehellman )
       
   640   {
       
   641     // create hidden control - server requested that DiffieHellman be disabled (usually means not supported)
       
   642     var check_dh = document.createElement('input');
       
   643     check_dh.type = 'hidden';
       
   644     check_dh.id = 'ajax_login_field_dh';
       
   645     form.appendChild(check_dh);
       
   646   }
   591   else
   647   else
   592   {
   648   {
   593     var lbl_dh = document.createElement('label');
   649     var lbl_dh = document.createElement('label');
   594     lbl_dh.style.fontSize = 'smaller';
   650     lbl_dh.style.fontSize = 'smaller';
   595     lbl_dh.style.display = 'block';
   651     lbl_dh.style.display = 'block';
   742     {
   798     {
   743       // The user probably clicked ok when the form wasn't in there.
   799       // The user probably clicked ok when the form wasn't in there.
   744       return false;
   800       return false;
   745     }
   801     }
   746   }
   802   }
       
   803   
   747   if ( !username )
   804   if ( !username )
   748   {
   805   {
   749     var username = document.getElementById('ajax_login_field_username').value;
   806     var username = document.getElementById('ajax_login_field_username').value;
   750   }
   807   }
   751   if ( !password )
   808   if ( !password )
   754   }
   811   }
   755   if ( !captcha && document.getElementById('ajax_login_field_captcha') )
   812   if ( !captcha && document.getElementById('ajax_login_field_captcha') )
   756   {
   813   {
   757     var captcha = document.getElementById('ajax_login_field_captcha').value;
   814     var captcha = document.getElementById('ajax_login_field_captcha').value;
   758   }
   815   }
       
   816   
       
   817   try
       
   818   {
   759   
   819   
   760   if ( do_dh )
   820   if ( do_dh )
   761   {
   821   {
   762     ajaxLoginSetStatus(AJAX_STATUS_GENERATING_KEY);
   822     ajaxLoginSetStatus(AJAX_STATUS_GENERATING_KEY);
   763     if ( !real )
   823     if ( !real )
   833       captcha_hash: captcha_hash,
   893       captcha_hash: captcha_hash,
   834       key_aes: hex_md5(crypt_key),
   894       key_aes: hex_md5(crypt_key),
   835       level: logindata.user_level,
   895       level: logindata.user_level,
   836       remember: remember_session
   896       remember: remember_session
   837     }
   897     }
       
   898   }
       
   899   }
       
   900   catch(e)
       
   901   {
       
   902     ajaxLoginSetStatus(AJAX_STATUS_ERROR);
       
   903     console.error('Exception caught in login process; backtrace follows');
       
   904     console.debug(e);
       
   905     return false;
   838   }
   906   }
   839   ajaxLoginPerformRequest(json_packet);
   907   ajaxLoginPerformRequest(json_packet);
   840 }
   908 }
   841 
   909 
   842 window.ajaxLoginShowFriendlyError = function(response)
   910 window.ajaxLoginShowFriendlyError = function(response)