You are here

function _administerusersbyrole_can_edit_user in Administer Users by Role 7

Same name and namespace in other branches
  1. 5 administerusersbyrole.module \_administerusersbyrole_can_edit_user()
  2. 6 administerusersbyrole.module \_administerusersbyrole_can_edit_user()
2 calls to _administerusersbyrole_can_edit_user()
administerusersbyrole_form_user_profile_form_alter in ./administerusersbyrole.module
Implements hook_form_FORM_ID_alter().
administerusersbyrole_handler_field_user_link_edit::render_link in views/administerusersbyrole_handler_field_user_link_edit.inc
1 string reference to '_administerusersbyrole_can_edit_user'
administerusersbyrole_menu_alter in ./administerusersbyrole.module
Implements hook_menu_alter().

File

./administerusersbyrole.module, line 49
Provides fine-grained permissions for creating, editing, and deleting users.

Code

function _administerusersbyrole_can_edit_user($account) {
  global $user;
  if ($account->uid == $user->uid) {
    return TRUE;
  }

  // allow only uid1 to edit uid1
  if ($account->uid == 1) {
    return FALSE;
  }

  // We mave been passed a mock account object. If so, load the user to ensure
  // that we have roles to check against.
  if (!isset($account->roles)) {
    $account = user_load($account->uid);
  }
  if ($account->roles === array(
    DRUPAL_AUTHENTICATED_RID => 'authenticated user',
  )) {
    if (!user_access('edit users with no custom roles')) {
      return FALSE;
    }
  }
  $allow = TRUE;
  foreach ($account->roles as $rid => $role) {
    if ($rid === DRUPAL_AUTHENTICATED_RID) {
      continue;
    }
    if (user_access(_administerusersbyrole_build_perm_string($role, 'edit', TRUE))) {
      return TRUE;
    }
    if (!user_access(_administerusersbyrole_build_perm_string($role, 'edit', FALSE))) {
      $allow = FALSE;
    }
  }
  return $allow;
}