ScheduledTransitionsAccessControlHandler.php in Scheduled Transitions 2.x
Same filename and directory in other branches
Namespace
Drupal\scheduled_transitionsFile
src/ScheduledTransitionsAccessControlHandler.phpView source
<?php
declare (strict_types=1);
namespace Drupal\scheduled_transitions;
use Drupal\Core\Access\AccessResultInterface;
use Drupal\Core\Entity\EntityAccessControlHandler;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Session\AccountInterface;
use Drupal\scheduled_transitions\Entity\ScheduledTransitionInterface;
/**
* Access control handler for scheduled transitions.
*/
class ScheduledTransitionsAccessControlHandler extends EntityAccessControlHandler {
/**
* {@inheritdoc}
*/
protected function checkAccess(EntityInterface $entity, $operation, AccountInterface $account) : AccessResultInterface {
/** @var \Drupal\scheduled_transitions\Entity\ScheduledTransitionInterface $entity */
$access = parent::checkAccess($entity, $operation, $account);
if ($access
->isNeutral()) {
$entity = $entity
->getEntity();
if ($entity) {
// Defer access to associated entity.
return $entity
->access($operation, $account, TRUE);
}
}
if ($operation === ScheduledTransitionInterface::ENTITY_OPERATION_RESCHEDULE) {
$entity = $entity
->getEntity();
if ($entity) {
// Defer access to associated entity.
$access = $access
->andIf($entity
->access(ScheduledTransitionsPermissions::ENTITY_OPERATION_RESCHEDULE_TRANSITIONS, $account, TRUE));
}
}
return $access;
}
}
Classes
Name | Description |
---|---|
ScheduledTransitionsAccessControlHandler | Access control handler for scheduled transitions. |