plugins/yubikey/yubikey.js
author Dan
Thu, 26 Feb 2009 01:08:22 -0500
changeset 0 9d2c4f04a0d0
child 6 4f85ab095cc8
permissions -rw-r--r--
First commit! Hoping everything works.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
     1
// sample OTP:
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
     2
// ttttvvvvvvcurikvhjcvnlnbecbkubjvuittbifhndhn
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
     3
// charset: cbdefghijklnrtuv
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
     4
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
     5
var yk_interval = false;
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
     6
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
     7
var YK_SEC_NORMAL_USERNAME = 1;
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
     8
var YK_SEC_NORMAL_PASSWORD = 2;
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
     9
var YK_SEC_ELEV_USERNAME = 4;
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    10
var YK_SEC_ELEV_PASSWORD = 8;
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    11
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    12
var yubikey_otp_current = false;
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    13
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    14
function yk_mb_init(fieldid, statid)
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    15
{
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    16
  load_component(['messagebox', 'fadefilter', 'flyin', 'jquery', 'jquery-ui', 'l10n']);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    17
  var mp = miniPrompt(yk_mb_construct);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    18
  if ( typeof(fieldid) == 'function' )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    19
  {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    20
    var input = mp.getElementsByTagName('input')[0];
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    21
    input.submit_func = fieldid;
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    22
  }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    23
  else if ( fieldid && statid )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    24
  {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    25
    var input = mp.getElementsByTagName('input')[0];
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    26
    input.yk_field_id = fieldid;
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    27
    input.yk_status_id = statid;
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    28
  }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    29
}
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    30
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    31
function yk_mb_construct(mp)
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    32
{
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    33
  mp.innerHTML = '';
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    34
  mp.style.textAlign = 'center';
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    35
  mp.innerHTML = '<h3>' + $lang.get('yubiauth_msg_please_touch_key') + '</h3>';
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    36
  var ta = document.createElement('input');
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    37
  ta.submitted = false;
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    38
  $(ta)
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    39
    .css('background-color', 'transparent')
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    40
    .css('border-width', '0px')
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    41
    .css('color', '#fff')
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    42
    .css('font-size', '1px')
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    43
    .css('padding', '0')
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    44
    .attr('size', '1')
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    45
    .keyup(function(e)
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    46
      {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    47
        if ( e.keyCode == 27 )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    48
        {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    49
          window.clearInterval(yk_interval);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    50
          miniPromptDestroy(this);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    51
        }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    52
        else if ( this.value.length == 44 && !this.submitted )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    53
        {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    54
          this.submitted = true;
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    55
          yk_handle_submit(this);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    56
        }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    57
        e.preventDefault();
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    58
        e.stopPropagation();
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    59
      });
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    60
  mp.appendChild(ta);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    61
  setTimeout(function()
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    62
    {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    63
      window.yk_interval = setInterval(function()
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    64
        {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    65
          ta.focus();
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    66
        }, 50);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    67
    }, 750);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    68
  var info = document.createElement('p');
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    69
  info.innerHTML = $lang.get('yubiauth_msg_close_instructions');
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    70
  mp.appendChild(info);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    71
}
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    72
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    73
function yk_handle_submit(ta)
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    74
{
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    75
  if ( !ta.value.match(/^[cbdefghijklnrtuv]{44}$/) )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    76
  {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    77
    setTimeout(function()
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    78
      {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    79
        yk_mb_construct(ta.parentNode);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    80
      }, 1000);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    81
    ta.previousSibling.innerHTML = $lang.get('yubiauth_msg_invalid_chars');
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    82
    return false;
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    83
  }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    84
  
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    85
  window.clearInterval(yk_interval);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    86
  
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    87
  if ( ta.yk_field_id && ta.yk_status_id )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    88
  {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    89
    var field = document.getElementById(ta.yk_field_id);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    90
    var status = document.getElementById(ta.yk_status_id);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    91
    if ( $(status).hasClass('empty') || $(status).hasClass('rmpending') )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    92
    {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    93
      $(status).next('a')
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    94
        .text($lang.get('yubiauth_ctl_btn_change_key'))
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    95
        .addClass('abutton_green')
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    96
        .after(' <a class="abutton abutton_red yubikey_enroll" href="#yk_clear" onclick="yk_clear(\'' + ta.yk_field_id + '\', \'' + ta.yk_status_id + '\'); return false;">'
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    97
               + $lang.get('yubiauth_ctl_btn_clear') +
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    98
               '</a>');
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    99
    }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   100
    $(status).removeClass('empty').removeClass('enrolled').removeClass('rmpending').addClass('savepending').html($lang.get('yubiauth_ctl_status_enrolled_pending'));
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   101
    field.value = ta.value;
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   102
    miniPromptDestroy(ta);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   103
    return true;
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   104
  }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   105
  else if ( ta.submit_func )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   106
  {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   107
    ta.submit_func(ta);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   108
  }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   109
  else
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   110
  {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   111
    miniPromptDestroy(ta);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   112
  }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   113
}
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   114
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   115
function yk_login_validate_reqs(ta)
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   116
{
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   117
  ta.parentNode.removeChild(ta.nextSibling);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   118
  yubikey_otp_current = ta.value;
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   119
  
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   120
  ta.previousSibling.innerHTML = $lang.get('yubiauth_msg_validating_otp');
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   121
  
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   122
  ajaxPost(makeUrlNS('Special', 'Yubikey'), 'get_flags=' + ta.value.substr(0, 12), function(ajax)
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   123
    {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   124
      if ( ajax.readyState == 4 && ajax.status == 200 )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   125
      {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   126
        miniPromptDestroy(ta);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   127
        if ( !check_json_response(ajax.responseText) )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   128
        {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   129
          handle_invalid_json(ajax.responseText);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   130
          return false;
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   131
        }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   132
        ta.previousSibling.innerHTML = $lang.get('yubiauth_msg_otp_valid');
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   133
        var response = parseJSON(ajax.responseText);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   134
        if ( response.mode == 'error' )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   135
        {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   136
          alert('Yubikey server-side processing error: \n' + response.error);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   137
          return false;
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   138
        }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   139
        if ( logindata )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   140
        {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   141
          if ( logindata.mb_object )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   142
          {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   143
            // login window is open
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   144
            if ( user_level == USER_LEVEL_GUEST )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   145
            {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   146
              var show_username = response.flags & YK_SEC_NORMAL_USERNAME;
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   147
              var show_password = response.flags & YK_SEC_NORMAL_PASSWORD;
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   148
            }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   149
            else
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   150
            {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   151
              var show_username = response.flags & YK_SEC_ELEV_USERNAME;
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   152
              var show_password = response.flags & YK_SEC_ELEV_PASSWORD;
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   153
            }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   154
            if ( !show_username )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   155
              $('#ajax_login_field_username').parent('td').hide().prev().hide();
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   156
            if ( !show_password )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   157
              $('#ajax_login_field_password').parent('td').hide().prev().hide();
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   158
            
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   159
            var can_submit = true;
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   160
            if ( show_username && !$('#ajax_login_field_username').attr('value') )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   161
            {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   162
              $('#ajax_login_field_password').focus();
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   163
              can_submit = false;
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   164
            }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   165
            if ( show_password && !$('#ajax_login_field_password').attr('value') )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   166
            {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   167
              if ( can_submit )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   168
              {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   169
                $('#ajax_login_field_password').focus();
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   170
              }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   171
              can_submit = false;
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   172
            }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   173
            
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   174
            if ( can_submit )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   175
            {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   176
              $('#messageBoxButtons input:button:first').click();
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   177
            }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   178
          }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   179
        }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   180
      }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   181
    });
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   182
}
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   183
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   184
function yk_clear(field_id, status_id)
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   185
{
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   186
  var field = document.getElementById(field_id);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   187
  var status = document.getElementById(status_id);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   188
  
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   189
  var was_pending = $(field).hasClass('wasempty');
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   190
  
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   191
  $(field).attr('value', '');
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   192
  $(status)
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   193
    .removeClass('savepending')
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   194
    .removeClass('enrolled')
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   195
    .addClass( was_pending ? 'empty' : 'rmpending' )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   196
    .text( was_pending ? $lang.get('yubiauth_ctl_status_empty') : $lang.get('yubiauth_ctl_status_remove_pending') )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   197
    .next('a')
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   198
      .text($lang.get('yubiauth_ctl_btn_enroll'))
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   199
      .removeClass('abutton_green')
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   200
    .next('a')
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   201
      .remove();
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   202
}
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   203
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   204
addOnloadHook(function()
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   205
  {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   206
    attachHook('login_build_form', 'yk_login_dlg_hook(table);');
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   207
    attachHook('login_build_userinfo', 'if ( window.yubikey_otp_current ) userinfo.yubikey_otp = window.yubikey_otp_current;');
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   208
    load_component(['expander', 'jquery', 'jquery-ui']);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   209
  });
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   210
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   211
function yk_login_dlg_hook(table)
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   212
{
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   213
  window.yubikey_otp_current = false;
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   214
  var tr = document.createElement('tr');
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   215
  var td = document.createElement('td');
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   216
  $(td)
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   217
    .attr('colspan', '2')
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   218
    .css('text-align', 'center')
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   219
    .css('font-size', 'smaller')
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   220
    .css('font-weight', 'bold')
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   221
    .html('<a href="#" onclick="yk_mb_init(yk_login_validate_reqs); return false;" style="color: #6fa202">' + $lang.get('yubiauth_btn_enter_otp') + '</a>');
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   222
  $('a', td).blur(function(e)
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   223
    {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   224
      $('#messageBoxButtons input:button:first').focus();
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   225
      $('#ajax_login_field_captcha').focus();
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   226
    });
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   227
  tr.appendChild(td);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   228
  table.appendChild(tr);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   229
}
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   230