plugins/yubikey/usercp.php
author Dan
Thu, 26 Feb 2009 11:30:17 -0500
changeset 3 d0fe7acaf0e8
parent 0 9d2c4f04a0d0
child 8 032ca892b9a2
permissions -rw-r--r--
Maybe we could actually make yubikey_enable in config not ignored!
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
     1
<?php
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
     2
3
d0fe7acaf0e8 Maybe we could actually make yubikey_enable in config not ignored!
Dan
parents: 0
diff changeset
     3
if ( getConfig('yubikey_enable', '1') != '1' )
d0fe7acaf0e8 Maybe we could actually make yubikey_enable in config not ignored!
Dan
parents: 0
diff changeset
     4
  return true;
d0fe7acaf0e8 Maybe we could actually make yubikey_enable in config not ignored!
Dan
parents: 0
diff changeset
     5
0
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
     6
$plugins->attachHook("userprefs_jbox", "yubikey_ucp_setup();");
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
     7
$plugins->attachHook("userprefs_body", "return yubikey_user_cp(\$section);");
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
     8
$plugins->attachHook("login_form_html", "yubikey_inject_html_login();");
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
     9
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    10
function yubikey_ucp_setup()
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    11
{
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    12
  userprefs_menu_add('usercp_sec_profile', 'yubiucp_panel_title', makeUrlNS('Special', 'Preferences/Yubikey'));
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    13
}
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    14
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    15
function yubikey_user_cp($section)
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    16
{
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    17
  global $db, $session, $paths, $template, $plugins; // Common objects
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    18
  global $lang;
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    19
  
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    20
  if ( $section !== 'Yubikey' )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    21
    return false;
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    22
  
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    23
  $count_enabled = intval(getConfig('yubikey_enroll_limit', '3'));
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    24
  
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    25
  if ( isset($_POST['submit']) )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    26
  {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    27
    csrf_request_confirm();
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    28
    
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    29
    $keys = array();
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    30
    if ( isset($_POST['yubikey_enable']) )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    31
    {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    32
      for ( $i = 0; $i < $count_enabled; $i++ )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    33
      {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    34
        if ( !empty($_POST["yubikey_otp_$i"]) )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    35
        {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    36
          $ckey =& $_POST["yubikey_otp_$i"];
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    37
          if ( preg_match('/^[cbdefghijklnrtuv]{12,44}$/', $ckey) )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    38
          {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    39
            $ckey = substr($ckey, 0, 12);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    40
            $keys[] = $ckey;
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    41
          }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    42
          unset($ckey);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    43
        }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    44
      }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    45
    }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    46
    // Check for double enrollment
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    47
    $keys_check = "yubi_uid = '" . implode("' OR yubi_uid = '", $keys) . "'";
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    48
    $q = $db->sql_query('SELECT yubi_uid FROM ' . table_prefix . "yubikey WHERE ( $keys_check ) AND user_id != {$session->user_id};");
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    49
    if ( !$q )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    50
      $db->_die();
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    51
    
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    52
    if ( $db->numrows() > 0 )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    53
    {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    54
      echo '<div class="error-box" style="margin: 0 0 10px 0;">' . $lang->get('yubiucp_err_double_enrollment') . '</div>';
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    55
      while ( $row = $db->fetchrow() )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    56
      {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    57
        foreach ( $keys as $i => $key )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    58
        {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    59
          if ( $key == $row['yubi_uid'] )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    60
          {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    61
            unset($keys[$i]);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    62
          }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    63
        }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    64
      }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    65
      $keys = array_values($keys);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    66
    }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    67
    $db->free_result();
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    68
    
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    69
    // Remove all currently registered keys
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    70
    $q = $db->sql_query('DELETE FROM ' . table_prefix . "yubikey WHERE user_id = {$session->user_id};");
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    71
    if ( !$q )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    72
      $db->_die();
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    73
    
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    74
    // Enroll any new keys
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    75
    if ( !empty($keys) )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    76
    {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    77
      $query = 'INSERT INTO ' . table_prefix . "yubikey(user_id, yubi_uid) VALUES\n  " .
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    78
                 "( $session->user_id, '" . implode("' ),\n  ( $session->user_id, '", $keys) . "' );";
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    79
      if ( !$db->sql_query($query) )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    80
        $db->_die();
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    81
    }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    82
    
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    83
    // Calculate flags
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    84
    $yubi_flags = 0;
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    85
    $yubi_flags |= intval($_POST['login_normal_flags']);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    86
    $yubi_flags |= intval($_POST['login_elev_flags']);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    87
    $yubi_flags |= ( isset($_POST['allow_no_yubikey']) ) ? YK_SEC_ALLOW_NO_OTP : 0;
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    88
    
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    89
    // update flags
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    90
    $q = $db->sql_query('UPDATE ' . table_prefix . "users SET user_yubikey_flags = $yubi_flags WHERE user_id = {$session->user_id};");
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    91
    if ( !$q )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    92
      $db->_die();
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    93
  }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    94
  else
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    95
  {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    96
    // Fetch flags
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    97
    $q = $db->sql_query('SELECT user_yubikey_flags FROM ' . table_prefix . "users WHERE user_id = {$session->user_id};");
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    98
    if ( !$q )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
    99
      $db->_die();
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   100
    
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   101
    list($yubi_flags) = $db->fetchrow_num();
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   102
    $yubi_flags = intval($yubi_flags);
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   103
    // Fetch user's authorized keys from the DB
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   104
    $q = $db->sql_query('SELECT yubi_uid FROM ' . table_prefix . "yubikey WHERE user_id = {$session->user_id};");
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   105
    if ( !$q )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   106
      $db->_die();
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   107
    
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   108
    $keys = array();
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   109
    while ( $row = $db->fetchrow() )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   110
    {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   111
      $keys[] = $row['yubi_uid'];
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   112
    }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   113
    $db->free_result();
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   114
  }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   115
  
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   116
  while ( count($keys) < $count_enabled )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   117
  {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   118
    $keys[] = false;
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   119
  }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   120
  
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   121
  $enable_checked = ( $keys[0] === false && !isset($_POST['yubikey_enable']) ) ? '' : 'checked="checked"';
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   122
  $displaytable = ( $keys[0] === false && !isset($_POST['yubikey_enable']) ) ? 'none' : 'block';
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   123
  
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   124
  $check_normal_keyonly = ( !($yubi_flags & YK_SEC_NORMAL_USERNAME) && !($yubi_flags & YK_SEC_NORMAL_PASSWORD) ) ? 'checked="checked" ' : '';
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   125
  $check_normal_username = ( ($yubi_flags & YK_SEC_NORMAL_USERNAME) && !($yubi_flags & YK_SEC_NORMAL_PASSWORD) ) ? 'checked="checked" ' : '';
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   126
  $check_normal_userandpw = ( ($yubi_flags & YK_SEC_NORMAL_USERNAME) && ($yubi_flags & YK_SEC_NORMAL_PASSWORD) ) ? 'checked="checked" ' : '';
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   127
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   128
  $check_elev_keyonly = ( !($yubi_flags & YK_SEC_ELEV_USERNAME) && !($yubi_flags & YK_SEC_ELEV_PASSWORD) ) ? 'checked="checked" ' : '';
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   129
  $check_elev_username = ( ($yubi_flags & YK_SEC_ELEV_USERNAME) && !($yubi_flags & YK_SEC_ELEV_PASSWORD) ) ? 'checked="checked" ' : '';
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   130
  $check_elev_userandpw = ( ($yubi_flags & YK_SEC_ELEV_USERNAME) && ($yubi_flags & YK_SEC_ELEV_PASSWORD) ) ? 'checked="checked" ' : '';  
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   131
  
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   132
  ?>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   133
  <h3 style="margin-top: 0;"><?php echo $lang->get('yubiucp_panel_title'); ?></h3>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   134
  
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   135
  <form action="<?php echo makeUrlNS('Special', 'Preferences/Yubikey'); ?>" method="post">
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   136
  
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   137
  <div>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   138
    <table border="0" cellpadding="4" width="100%">
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   139
      <tr>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   140
        <td style="width: 50%; text-align: right;">
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   141
          <?php echo $lang->get('yubiucp_field_enable_title'); ?><br />
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   142
          <small><?php echo $lang->get('yubiucp_field_enable_hint'); ?></small>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   143
        </td>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   144
        <td style="width: 50%;">
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   145
          <label>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   146
            <input type="checkbox" name="yubikey_enable" onclick="if ( $(this).attr('checked') ) $('#yk_useroptions').show('blind'); else $('#yk_useroptions').hide('blind');" <?php echo $enable_checked; ?> />
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   147
            <?php echo $lang->get('yubiucp_field_enable'); ?>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   148
          </label>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   149
        </td>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   150
      </tr>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   151
    </table>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   152
    <table border="0" cellpadding="4" width="100%" id="yk_useroptions" style="display: <?php echo $displaytable ?>;">
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   153
      <tr class="yk_alt1">
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   154
      <td style="width: 50%; text-align: right;">
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   155
          <?php echo $lang->get('yubiucp_field_keys_title'); ?><br />
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   156
          <small><?php
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   157
          echo $lang->get('yubiucp_field_keys_hint');
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   158
          if ( $count_enabled > 1 )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   159
          {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   160
            echo ' ';
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   161
            echo $lang->get('yubiucp_field_keys_maximum', array('max' => $count_enabled));
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   162
          }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   163
          ?></small>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   164
        </td>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   165
        <td style="width: 50%;">
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   166
          <?php
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   167
          for ( $i = 0; $i < $count_enabled; $i++ )
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   168
          {
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   169
            echo '<p>' . generate_yubikey_field('yubikey_otp_' . $i, $keys[$i]) . '</p>';
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   170
          }
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   171
          ?>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   172
        </td>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   173
      </tr>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   174
      <tr>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   175
        <td style="width: 50%; text-align: right;">
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   176
          <?php echo $lang->get('yubiucp_field_normal_flags'); ?>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   177
        </td>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   178
        <td>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   179
          <label>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   180
            <input type="radio" name="login_normal_flags" value="0" <?php echo $check_normal_keyonly; ?>/>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   181
            <?php echo $lang->get('yubiucp_field_flags_keyonly'); ?>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   182
          </label>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   183
          
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   184
          <br />
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   185
          
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   186
          <label>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   187
            <input type="radio" name="login_normal_flags" value="<?php echo strval(YK_SEC_NORMAL_USERNAME); ?>" <?php echo $check_normal_username; ?>/>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   188
            <?php echo $lang->get('yubiucp_field_flags_username'); ?>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   189
          </label>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   190
          
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   191
          <br />
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   192
          
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   193
          <label>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   194
            <input type="radio" name="login_normal_flags" value="<?php echo strval(YK_SEC_NORMAL_USERNAME | YK_SEC_NORMAL_PASSWORD); ?>" <?php echo $check_normal_userandpw; ?>/>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   195
            <?php echo $lang->get('yubiucp_field_flags_userandpw'); ?>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   196
          </label>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   197
        </td>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   198
      </tr>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   199
      <tr class="yk_alt1">
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   200
        <td style="width: 50%; text-align: right;">
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   201
          <?php echo $lang->get('yubiucp_field_elev_flags'); ?>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   202
        </td>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   203
        <td>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   204
          <label>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   205
            <input type="radio" name="login_elev_flags" value="0" <?php echo $check_elev_keyonly; ?>/>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   206
            <?php echo $lang->get('yubiucp_field_flags_keyonly'); ?>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   207
          </label>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   208
          
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   209
          <br />
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   210
          
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   211
          <label>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   212
            <input type="radio" name="login_elev_flags" value="<?php echo strval(YK_SEC_ELEV_USERNAME); ?>" <?php echo $check_elev_username; ?>/>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   213
            <?php echo $lang->get('yubiucp_field_flags_username'); ?>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   214
          </label>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   215
          
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   216
          <br />
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   217
          
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   218
          <label>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   219
            <input type="radio" name="login_elev_flags" value="<?php echo strval(YK_SEC_ELEV_USERNAME | YK_SEC_ELEV_PASSWORD); ?>" <?php echo $check_elev_userandpw; ?>/>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   220
            <?php echo $lang->get('yubiucp_field_flags_userandpw'); ?>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   221
          </label>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   222
        </td>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   223
      </tr>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   224
      <tr>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   225
        <td>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   226
        </td>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   227
        <td>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   228
          <label>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   229
            <input type="checkbox" name="allow_no_yubikey" <?php if ( $yubi_flags & YK_SEC_ALLOW_NO_OTP ) echo 'checked="checked" '; ?>/>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   230
            <?php echo $lang->get('yubiucp_field_allow_plain_login'); ?>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   231
          </label>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   232
          <br />
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   233
          <small>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   234
            <?php echo $lang->get('yubiucp_field_allow_plain_login_hint'); ?>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   235
          </small>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   236
        </td>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   237
      </tr>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   238
    </table>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   239
    <table border="0" cellpadding="4" width="100%">
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   240
      <tr class="yk_alt1">
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   241
        <td colspan="2" style="text-align: center;">
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   242
          <input type="submit" name="submit" value="<?php echo $lang->get('etc_save_changes'); ?>" />
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   243
        </td>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   244
      </tr>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   245
    </table>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   246
  </div>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   247
  
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   248
  <input type="hidden" name="cstok" value="<?php echo $session->csrf_token; ?>" />
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   249
  
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   250
  </form>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   251
  <?php
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   252
  
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   253
  return true;
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   254
}
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   255
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   256
function yubikey_inject_html_login()
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   257
{
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   258
  global $lang;
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   259
  ?>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   260
  <tr>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   261
    <td class="row2">
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   262
      <?php echo $lang->get('yubiauth_lbl_otp_field'); ?>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   263
    </td>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   264
    <td class="row1" colspan="2">
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   265
      <input type="text" size="40" class="yubikey_noscript" name="yubikey_otp" />
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   266
    </td>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   267
  </tr>
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   268
  <?php
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   269
}
9d2c4f04a0d0 First commit! Hoping everything works.
Dan
parents:
diff changeset
   270