trinion_tp-1.0.x-dev/src/Access/UtverditDokumentChecker.php

src/Access/UtverditDokumentChecker.php
<?php

namespace Drupal\trinion_tp\Access;

use Drupal\Core\Access\AccessResult;
use Drupal\Core\Routing\Access\AccessInterface;
use Drupal\node\Entity\Node;
use Symfony\Component\Routing\Route;

/**
 * Проверка доступа к утверждению документа
 */
class UtverditDokumentChecker implements AccessInterface {

  /**
   * Access callback.
   */
  public function access(Route $route, $node, $op) {
    $node = Node::load($node);
    $bundle = $node->bundle();
    if ($node->hasField('field_tp_otvetstvennyy') &&
      $node->hasField('field_tp_utverzhdeno') &&
      (
        $bundle == 'zakaz_klienta' &&
        $node->get('field_tp_zarezervirovan')->getString() != $op
        ||
        $node->get('field_tp_utverzhdeno')->getString() != $op
      )
    ) {
      $user = \Drupal::currentUser();
      if ($user->hasPermission('trinion_base edit all'))
        return AccessResult::allowed();
      if ($user->id() == $node->get('field_tp_otvetstvennyy')->getString())
        return AccessResult::allowed();
    }
    return AccessResult::forbidden();
  }
}

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

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