MenuAccessControlHandler.php

Same filename in other branches
  1. 9 core/modules/system/src/MenuAccessControlHandler.php
  2. 8.9.x core/modules/system/src/MenuAccessControlHandler.php
  3. 10 core/modules/system/src/MenuAccessControlHandler.php

Namespace

Drupal\system

File

core/modules/system/src/MenuAccessControlHandler.php

View source
<?php

namespace Drupal\system;

use Drupal\Core\Access\AccessResult;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\EntityAccessControlHandler;
use Drupal\Core\Session\AccountInterface;

/**
 * Defines the access control handler for the menu entity type.
 *
 * @see \Drupal\system\Entity\Menu
 */
class MenuAccessControlHandler extends EntityAccessControlHandler {
    
    /**
     * {@inheritdoc}
     */
    protected $viewLabelOperation = TRUE;
    
    /**
     * {@inheritdoc}
     */
    protected function checkAccess(EntityInterface $entity, $operation, AccountInterface $account) {
        // There are no restrictions on viewing the label of a menu.
        if ($operation === 'view label') {
            return AccessResult::allowed();
        }
        elseif ($operation === 'delete') {
            if ($entity->isLocked()) {
                return AccessResult::forbidden('The Menu config entity is locked.')->addCacheableDependency($entity);
            }
            else {
                return parent::checkAccess($entity, $operation, $account)->addCacheableDependency($entity);
            }
        }
        return parent::checkAccess($entity, $operation, $account);
    }

}

Classes

Title Deprecated Summary
MenuAccessControlHandler Defines the access control handler for the menu entity type.

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