You are here

function simplesamlphp_auth_init in simpleSAMLphp Authentication 7.3

Same name and namespace in other branches
  1. 6.3 simplesamlphp_auth.module \simplesamlphp_auth_init()
  2. 6.2 simplesamlphp_auth.module \simplesamlphp_auth_init()
  3. 7 simplesamlphp_auth.module \simplesamlphp_auth_init()
  4. 7.2 simplesamlphp_auth.module \simplesamlphp_auth_init()

Implements hook_init().

If the user has logged out via SAML, log out the user in Drupal as well.

File

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

Code

function simplesamlphp_auth_init() {
  if (user_is_anonymous()) {
    return FALSE;
  }
  if (!_simplesaml_auth_autoload()) {
    return FALSE;
  }
  global $user;
  global $_simplesamlphp_auth_as;
  global $_simplesamlphp_auth_saml_attributes;

  // Get users that are allowed default login.
  $allowed_default_login_users = variable_get('simplesamlphp_auth_allowdefaultloginusers', '');
  $allowed_uids = explode(",", $allowed_default_login_users);

  // Get roles that are allowed default login.
  $allowed_default_login_roles = variable_get('simplesamlphp_auth_allowdefaultloginroles', array());

  // Check if user is allowed default login.
  $user_allowed_default_login_roles = array_intersect_key($user->roles, $allowed_default_login_roles);
  if (variable_get('simplesamlphp_auth_allowdefaultlogin', TRUE) && (in_array($user->uid, $allowed_uids) || !empty($user_allowed_default_login_roles))) {
    $user_allowed_default_login = TRUE;
  }

  // Logs out user if not SAML authenticated and not allowed default login.
  if (!$_simplesamlphp_auth_as
    ->isAuthenticated() && !$user_allowed_default_login) {
    module_load_include('pages.inc', 'user');
    user_logout();
  }
}