You are here

function simplesamlphp_auth_user in simpleSAMLphp Authentication 6.3

Same name and namespace in other branches
  1. 6.2 simplesamlphp_auth.module \simplesamlphp_auth_user()

Implementation of hook_user().

File

./simplesamlphp_auth.module, line 352
simpleSAMLphp authentication module for Drupal.

Code

function simplesamlphp_auth_user($op, &$edit, &$account, $category = NULL) {
  global $_simplesamlphp_auth_as;
  global $_simplesamlphp_auth_saml_attributes;
  if ($op == 'insert' && ($category = 'account')) {

    // If user registration has a valid session.
    if ($_simplesamlphp_auth_as
      ->isAuthenticated()) {

      // Get name from default attributes.
      try {
        _simplesaml_auth_debug(t('Registering user [%acctname]', array(
          '%acctname' => $account->name,
        )));
        $account->name = _simplesamlphp_auth_get_default_name($account->uid);
      } catch (Exception $e) {
        $message = t('Username is missing.' . check_plain($e
          ->getMessage()));
        drupal_set_message(t($message), "error");
        watchdog('simplesamlphp', $message, WATCHDOG_CRITICAL);
      }
      db_query("UPDATE {users} SET name = '%s' WHERE uid = %d", $account->name, $account->uid);
      _simplesaml_auth_debug(t('Updating username [%acctname]', array(
        '%acctname' => $account->name,
      )));

      // Get mail from default attribute.
      try {
        $mail_address = _simplesamlphp_auth_get_mail();
      } catch (Exception $e) {
        $message = t('Email is missing.' . check_plain($e
          ->getMessage()));
        drupal_set_message(t($message), "error");
        watchdog('simplesamlphp', $message, WATCHDOG_CRITICAL);
      }
      if (!empty($mail_address)) {
        db_query("UPDATE {users} SET mail = '%s' WHERE uid = %d", $mail_address, $account->uid);
      }
      _simplesaml_auth_debug(t('Updating mail [%mailaddr]', array(
        '%mailaddr' => $mail_address,
      )));
    }
  }
  elseif ($op == 'logout') {
    if (!empty($_simplesamlphp_auth_saml_attributes)) {
      $config = SimpleSAML_Configuration::getInstance();
      $gotourl = base_path();
      if (variable_get('simplesamlphp_auth_logoutgotourl', '')) {
        $gotourl = variable_get('simplesamlphp_auth_logoutgotourl', '');
      }
      $_simplesamlphp_auth_as
        ->logout($gotourl);
    }
  }
  elseif ($op == "delete") {
    db_query("DELETE FROM {authmap} WHERE uid = %d AND authname = '%s' AND module = 'simplesamlphp_auth'", $account->uid, $account->name);
  }
}