You are here

tfa_basic.install in TFA Basic plugins 7

File

tfa_basic.install
View source
<?php

/**
 * Implements hook_schema().
 */
function tfa_basic_schema() {
  $schema['tfa_user_settings'] = array(
    'fields' => array(
      'uid' => array(
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 0,
      ),
      'saved' => array(
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
      'status' => array(
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
      'data' => array(
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => '',
      ),
    ),
    'primary key' => array(
      'uid',
    ),
  );
  $schema['tfa_totp_seed'] = array(
    'fields' => array(
      'uid' => array(
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 0,
      ),
      'seed' => array(
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => '',
        'description' => 'Base 64 encoded encrypted seed',
      ),
      'created' => array(
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
    ),
    'primary key' => array(
      'uid',
    ),
  );
  $schema['tfa_trusted_browser'] = array(
    'fields' => array(
      'did' => array(
        'type' => 'serial',
        'unsigned' => TRUE,
        'not null' => TRUE,
      ),
      'uid' => array(
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 0,
      ),
      'value' => array(
        'type' => 'varchar',
        'length' => 160,
        'not null' => TRUE,
        'default' => '',
      ),
      'created' => array(
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
      'last_used' => array(
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
      'ip' => array(
        'type' => 'varchar',
        'length' => 60,
        'not null' => TRUE,
        'default' => '',
      ),
      'name' => array(
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => '',
      ),
    ),
    'primary key' => array(
      'did',
    ),
    'indexes' => array(
      'browser' => array(
        'uid',
        'value',
      ),
    ),
  );
  $schema['tfa_recovery_code'] = array(
    'fields' => array(
      'id' => array(
        'type' => 'serial',
        'unsigned' => TRUE,
        'not null' => TRUE,
      ),
      'uid' => array(
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 0,
      ),
      'code' => array(
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => '',
        'description' => 'Base 64 encoded encrypted code',
      ),
      'created' => array(
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
      'used' => array(
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
    ),
    'primary key' => array(
      'id',
    ),
    'indexes' => array(
      'uid' => array(
        'uid',
      ),
    ),
  );
  $schema['tfa_accepted_code'] = array(
    'fields' => array(
      'cid' => array(
        'type' => 'serial',
        'unsigned' => TRUE,
        'not null' => TRUE,
      ),
      'uid' => array(
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 0,
      ),
      'code_hash' => array(
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => '',
        'description' => '',
      ),
      'time_accepted' => array(
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
    ),
    'primary key' => array(
      'cid',
    ),
    'indexes' => array(
      'uid_code' => array(
        'uid',
        'code_hash',
      ),
      'time_accepted' => array(
        'time_accepted',
      ),
    ),
  );
  return $schema;
}

/**
 * Create new database table {tfa_recovery_code}.
 */
function tfa_basic_update_7001() {
  $schema['tfa_recovery_code'] = array(
    'fields' => array(
      'id' => array(
        'type' => 'serial',
        'unsigned' => TRUE,
        'not null' => TRUE,
      ),
      'uid' => array(
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 0,
      ),
      'code' => array(
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => '',
        'description' => 'Base 64 encoded encrypted code',
      ),
      'created' => array(
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
      'used' => array(
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
    ),
    'primary key' => array(
      'id',
    ),
    'indexes' => array(
      'uid' => array(
        'uid',
      ),
    ),
  );
  db_create_table('tfa_recovery_code', $schema['tfa_recovery_code']);
}

/**
 * Rename trusted device to trusted browser.
 */
function tfa_basic_update_7002() {

  // Rename DB table.
  db_rename_table('tfa_trusted_device', 'tfa_trusted_browser');

  // Rename login plugin.
  $plugins = variable_get('tfa_login_plugins');
  if (!empty($plugins)) {
    foreach ($plugins as $k => $plugin) {
      if ($plugin == 'tfa_basic_trusted_device') {
        $plugins[$k] = 'tfa_basic_trusted_browser';

        // Keep the legacy cookie name.
        variable_set('tfa_basic_cookie_name', 'TD');
      }
    }
    variable_set('tfa_login_plugins', $plugins);
  }
}

/**
 * Create new database table {tfa_accepted_code}.
 */
function tfa_basic_update_7003() {
  $schema['tfa_accepted_code'] = array(
    'fields' => array(
      'cid' => array(
        'type' => 'serial',
        'unsigned' => TRUE,
        'not null' => TRUE,
      ),
      'uid' => array(
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 0,
      ),
      'code_hash' => array(
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => '',
        'description' => '',
      ),
      'time_accepted' => array(
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
    ),
    'primary key' => array(
      'cid',
    ),
    'indexes' => array(
      'uid_code' => array(
        'uid',
        'code_hash',
      ),
      'time_accepted' => array(
        'time_accepted',
      ),
    ),
  );
  db_create_table('tfa_accepted_code', $schema['tfa_accepted_code']);
}

/**
 * Implements hook_uninstall().
 */
function tfa_basic_uninstall() {

  // Delete TFA Basic variables.
  variable_del('tfa_basic_secret_key');
  variable_del('tfa_basic_time_skew');
  variable_del('tfa_recovery_codes_amount');
  variable_del('tfa_basic_trust_cookie_expiration');
  variable_del('tfa_basic_name_prefix');
  variable_del('tfa_basic_cookie_name');
  variable_del('tfa_basic_twilio_account_sid');
  variable_del('tfa_basic_twilio_account_token');
  variable_del('tfa_basic_sms_nanp_validate');
}

Functions

Namesort descending Description
tfa_basic_schema Implements hook_schema().
tfa_basic_uninstall Implements hook_uninstall().
tfa_basic_update_7001 Create new database table {tfa_recovery_code}.
tfa_basic_update_7002 Rename trusted device to trusted browser.
tfa_basic_update_7003 Create new database table {tfa_accepted_code}.