function shortcut_set_edit_access

Same name and namespace in other branches
  1. 7.x modules/shortcut/shortcut.module \shortcut_set_edit_access()
  2. 8.9.x core/modules/shortcut/shortcut.module \shortcut_set_edit_access()
  3. 10 core/modules/shortcut/shortcut.module \shortcut_set_edit_access()
  4. 11.x core/modules/shortcut/shortcut.module \shortcut_set_edit_access()

Access callback for editing a shortcut set.

Parameters

Drupal\shortcut\ShortcutSetInterface $shortcut_set: (optional) The shortcut set to be edited. If not set, the current user's shortcut set will be used.

Return value

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

2 calls to shortcut_set_edit_access()
ShortcutAccessControlHandler::checkAccess in core/modules/shortcut/src/ShortcutAccessControlHandler.php
Performs access checks.
ShortcutAccessControlHandler::checkCreateAccess in core/modules/shortcut/src/ShortcutAccessControlHandler.php
Performs create access checks.

File

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

Code

function shortcut_set_edit_access(ShortcutSetInterface $shortcut_set = NULL) {
    $account = \Drupal::currentUser();
    // Shortcut administrators can edit any set.
    if ($account->hasPermission('administer shortcuts')) {
        return AccessResult::allowed()->cachePerPermissions();
    }
    // Sufficiently-privileged users can edit their currently displayed shortcut
    // set, but not other sets. They must also be able to access shortcuts.
    $may_edit_current_shortcut_set = $account->hasPermission('customize shortcut links') && (!isset($shortcut_set) || $shortcut_set == shortcut_current_displayed_set()) && $account->hasPermission('access shortcuts');
    $result = AccessResult::allowedIf($may_edit_current_shortcut_set)->cachePerPermissions();
    if (!$result->isAllowed()) {
        $result->setReason("The shortcut set must be the currently displayed set for the user and the user must have 'access shortcuts' AND 'customize shortcut links' permissions.");
    }
    return $result;
}

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