localgov_alert_banner-1.8.5/src/Access/AlertBannerEntityPageAccess.php

src/Access/AlertBannerEntityPageAccess.php
<?php

declare(strict_types=1);

namespace Drupal\localgov_alert_banner\Access;

use Drupal\Core\Access\AccessResult;
use Drupal\Core\Routing\Access\AccessInterface;
use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\Core\Session\AccountInterface;
use Drupal\localgov_alert_banner\Entity\AlertBannerEntity;

/**
 * Checks access to alert banner entity pages.
 *
 * @ingroup localgov_alert_banner
 */
class AlertBannerEntityPageAccess implements AccessInterface {

  /**
   * {@inheritDoc}
   */
  public function access(AccountInterface $account, RouteMatchInterface $route_match): mixed {

    if ($account->hasPermission('view all localgov alert banner entity pages')) {
      return AccessResult::allowed();
    }
    elseif ($route_match->getParameters()->has('localgov_alert_banner')) {
      $alert_banner = $route_match->getParameter('localgov_alert_banner');
      if ($alert_banner instanceof AlertBannerEntity) {
        $type_id = $alert_banner->bundle();
        if ($account->hasPermission("view localgov alert banner $type_id pages")) {
          return AccessResult::allowed();
        }
        else {
          return AccessResult::forbidden();
        }
      }
      return AccessResult::neutral();
    }
    else {
      return AccessResult::neutral();
    }
  }

}

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

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