menu_perms_per_menu-1.0.0-rc4/src/Access/MenuPermsPerMenuPermissions.php

src/Access/MenuPermsPerMenuPermissions.php
<?php

namespace Drupal\menu_perms_per_menu\Access;

use Drupal\Core\Access\AccessResult;
use Drupal\Core\Session\AccountInterface;
use Drupal\Core\StringTranslation\StringTranslationTrait;
use Drupal\menu_link_content\Entity\MenuLinkContent;
use Drupal\system\Entity\Menu;

/**
 * Provides permissions for each menu.
 */
class MenuPermsPerMenuPermissions {

  use StringTranslationTrait;

  /**
   * Returns an array of menu permissions.
   *
   * @return array
   *   The menu permissions.
   */
  public function permissions() {
    $perms = [];
    $menus = Menu::loadMultiple();
    foreach ($menus as $menu) {
      $perms['add new links to ' . $menu->id() . ' menu from menu interface'] = [
        'title' => $this->t('Add new links to %menu menu from the menu interface', ['%menu' => $menu->label()]),
      ];
      $perms['delete links in ' . $menu->id() . ' menu from menu interface'] = [
        'title' => $this->t('Delete links in %menu menu from the menu interface', ['%menu' => $menu->label()]),
      ];
      $perms['enable/disable links in ' . $menu->id() . ' menu'] = [
        'title' => $this->t('Enable/disable links in %menu menu', ['%menu' => $menu->label()]),
      ];
      $perms['expand links in ' . $menu->id() . ' menu'] = [
        'title' => $this->t('Expand links in %menu menu', ['%menu' => $menu->label()]),
      ];
      $perms['edit link of menu links in ' . $menu->id() . ' menu'] = [
        'title' => $this->t('Edit link of menu links in %menu menu', ['%menu' => $menu->label()]),
      ];
      $perms['translate links in ' . $menu->id() . ' menu from menu interface'] = [
        'title' => $this->t('Translate links in %menu menu from the menu interface', ['%menu' => $menu->label()]),
      ];
    }
    return $perms;
  }

  /**
   * Checks access to create new menu item.
   *
   * @param \Drupal\Core\Session\AccountInterface $account
   *   Run access checks for this account.
   * @param \Drupal\system\Entity\Menu $menu
   *   Run access checks for this menu object.
   *
   * @return \Drupal\Core\Access\AccessResult
   *   The access result.
   */
  public function addItemAccess(AccountInterface $account, Menu $menu) {
    return AccessResult::allowedIfHasPermission($account, 'add new links to ' . $menu->id() . ' menu from menu interface');
  }

  /**
   * Checks access to delete a menu item.
   *
   * @param \Drupal\Core\Session\AccountInterface $account
   *   Run access checks for this account.
   * @param \Drupal\menu_link_content\Entity\MenuLinkContent $menu_link_content
   *   Run access checks for this menu link object.
   *
   * @return \Drupal\Core\Access\AccessResult
   *   The access result.
   */
  public function deleteItemAccess(AccountInterface $account, ?MenuLinkContent $menu_link_content = NULL) {
    if (!$menu_link_content) {
      return AccessResult::neutral();
    }
    return AccessResult::allowedIfHasPermission($account, 'delete links in ' . $menu_link_content->getMenuName() . ' menu from menu interface');
  }

  /**
   * Checks access to menu item translation.
   *
   * @param \Drupal\Core\Session\AccountInterface $account
   *   Run access checks for this account.
   * @param \Drupal\menu_link_content\Entity\MenuLinkContent $menu_link_content
   *   Run access checks for this menu link object.
   *
   * @return \Drupal\Core\Access\AccessResult
   *   The access result.
   */
  public function translateItemAccess(AccountInterface $account, ?MenuLinkContent $menu_link_content = NULL) {
    if (!$menu_link_content) {
      return AccessResult::neutral();
    }
    return AccessResult::allowedIfHasPermission($account, 'translate links in ' . $menu_link_content->getMenuName() . ' menu from menu interface');
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc