wse-1.0.x-dev/modules/wse_group_access/src/Access/WseGroupAccess.php

modules/wse_group_access/src/Access/WseGroupAccess.php
<?php

namespace Drupal\wse_group_access\Access;

use Drupal\Core\Access\AccessResult;
use Drupal\Core\Routing\Access\AccessInterface;
use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\Core\Session\AccountInterface;
use Symfony\Component\Routing\Route;

/**
 * Checks whether the current user has group access to a workspace.
 *
 * Requirements key: '_wse_group_access'.
 */
class WseGroupAccess implements AccessInterface {

  /**
   * Checks workspace group access.
   *
   * @return \Drupal\Core\Access\AccessResultInterface
   *   The access result.
   */
  public function access(Route $route, RouteMatchInterface $route_match, AccountInterface $account) {
    $workspace = $route_match->getParameter('workspace');

    $requirement = filter_var($route->getRequirement('_wse_group_access'), FILTER_VALIDATE_BOOLEAN);
    $actual_status = wse_group_access_check($workspace, $account);

    return AccessResult::allowedIf($requirement === $actual_status)
      ->addCacheableDependency($workspace)
      ->cachePerUser();
  }

}

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

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