function shortcut_set_switch_access

Same name in other branches
  1. 7.x modules/shortcut/shortcut.module \shortcut_set_switch_access()
  2. 9 core/modules/shortcut/shortcut.module \shortcut_set_switch_access()
  3. 8.9.x core/modules/shortcut/shortcut.module \shortcut_set_switch_access()
  4. 11.x core/modules/shortcut/shortcut.module \shortcut_set_switch_access()

Access callback for switching the shortcut set assigned to a user account.

Parameters

object $account: (optional) The user account whose shortcuts will be switched. If not set, permissions will be checked for switching the logged-in user's own shortcut set.

Return value

\Drupal\Core\Access\AccessResultInterface The access result.

1 call to shortcut_set_switch_access()
SwitchShortcutSet::checkAccess in core/modules/shortcut/src/Form/SwitchShortcutSet.php
Checks access for the shortcut set switch form.

File

core/modules/shortcut/shortcut.module, line 93

Code

function shortcut_set_switch_access($account = NULL) {
    $user = \Drupal::currentUser();
    if ($user->hasPermission('administer shortcuts')) {
        // Administrators can switch anyone's shortcut set.
        return AccessResult::allowed()->cachePerPermissions();
    }
    if (!$user->hasPermission('access shortcuts')) {
        // The user has no permission to use shortcuts.
        return AccessResult::neutral()->cachePerPermissions();
    }
    if (!$user->hasPermission('switch shortcut sets')) {
        // The user has no permission to switch anyone's shortcut set.
        return AccessResult::neutral()->cachePerPermissions();
    }
    // Users with the 'switch shortcut sets' permission can switch their own
    // shortcuts sets.
    if (!isset($account)) {
        return AccessResult::allowed()->cachePerPermissions();
    }
    elseif ($user->id() == $account->id()) {
        return AccessResult::allowed()->cachePerPermissions()
            ->cachePerUser();
    }
    // No opinion.
    return AccessResult::neutral()->cachePerPermissions();
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.