plugins/yubikey/yubikey.js
changeset 17 e04c0f64e972
parent 12 6faa838e4433
child 18 dd8c53454f31
equal deleted inserted replaced
16:3163b9f58ae8 17:e04c0f64e972
   143 function yk_login_validate_reqs(ta)
   143 function yk_login_validate_reqs(ta)
   144 {
   144 {
   145   $(ta.parentNode).remove('p');
   145   $(ta.parentNode).remove('p');
   146   yubikey_otp_current = ta.value;
   146   yubikey_otp_current = ta.value;
   147   
   147   
   148   $('h3', ta.parentNode).text($lang.get('yubiauth_msg_validating_otp'));
   148   miniPromptDestroy(ta, true);
   149   
   149   
   150   ajaxPost(makeUrlNS('Special', 'Yubikey'), 'get_flags=' + ta.value.substr(0, 12), function(ajax)
   150   if ( logindata )
   151     {
   151   {
   152       if ( ajax.readyState == 4 && ajax.status == 200 )
   152     if ( logindata.mb_object )
   153       {
   153     {
   154         miniPromptDestroy(ta);
   154       // login window is open
   155         if ( !check_json_response(ajax.responseText) )
   155       if ( user_level == USER_LEVEL_GUEST )
   156         {
   156       {
   157           handle_invalid_json(ajax.responseText);
   157         var show_username = response.flags & YK_SEC_NORMAL_USERNAME;
   158           return false;
   158         var show_password = response.flags & YK_SEC_NORMAL_PASSWORD;
   159         }
   159       }
   160         $('h3', ta.parentNode).text($lang.get('yubiauth_msg_otp_valid'));
   160       else
   161         var response = parseJSON(ajax.responseText);
   161       {
   162         if ( response.mode == 'error' )
   162         var show_username = response.flags & YK_SEC_ELEV_USERNAME;
   163         {
   163         var show_password = response.flags & YK_SEC_ELEV_PASSWORD;
   164           alert('Yubikey server-side processing error: \n' + response.error);
   164       }
   165           return false;
   165       if ( !show_username )
   166         }
   166         $('#ajax_login_field_username').parent('td').hide().prev().hide();
   167         if ( logindata )
   167       if ( !show_password )
   168         {
   168         $('#ajax_login_field_password').parent('td').hide().prev().hide();
   169           if ( logindata.mb_object )
   169       
   170           {
   170       var can_submit = true;
   171             // login window is open
   171       if ( show_username && !$('#ajax_login_field_username').attr('value') )
   172             if ( user_level == USER_LEVEL_GUEST )
   172       {
   173             {
   173         $('#ajax_login_field_password').focus();
   174               var show_username = response.flags & YK_SEC_NORMAL_USERNAME;
   174         can_submit = false;
   175               var show_password = response.flags & YK_SEC_NORMAL_PASSWORD;
   175       }
   176             }
   176       if ( show_password && !$('#ajax_login_field_password').attr('value') )
   177             else
   177       {
   178             {
   178         if ( can_submit )
   179               var show_username = response.flags & YK_SEC_ELEV_USERNAME;
   179         {
   180               var show_password = response.flags & YK_SEC_ELEV_PASSWORD;
   180           $('#ajax_login_field_password').focus();
   181             }
   181         }
   182             if ( !show_username )
   182         can_submit = false;
   183               $('#ajax_login_field_username').parent('td').hide().prev().hide();
   183       }
   184             if ( !show_password )
   184       
   185               $('#ajax_login_field_password').parent('td').hide().prev().hide();
   185       if ( can_submit )
   186             
   186       {
   187             var can_submit = true;
   187         $('#messageBoxButtons input:button:first').click();
   188             if ( show_username && !$('#ajax_login_field_username').attr('value') )
   188       }
   189             {
   189     }
   190               $('#ajax_login_field_password').focus();
   190   }
   191               can_submit = false;
       
   192             }
       
   193             if ( show_password && !$('#ajax_login_field_password').attr('value') )
       
   194             {
       
   195               if ( can_submit )
       
   196               {
       
   197                 $('#ajax_login_field_password').focus();
       
   198               }
       
   199               can_submit = false;
       
   200             }
       
   201             
       
   202             if ( can_submit )
       
   203             {
       
   204               $('#messageBoxButtons input:button:first').click();
       
   205             }
       
   206           }
       
   207         }
       
   208       }
       
   209     });
       
   210 }
   191 }
   211 
   192 
   212 function yk_clear(field_id, status_id)
   193 function yk_clear(field_id, status_id)
   213 {
   194 {
   214   var field = document.getElementById(field_id);
   195   var field = document.getElementById(field_id);