3 namespace Drupal\entityqueue;
5 use Drupal\Core\Access\AccessResult;
6 use Drupal\Core\Entity\EntityAccessControlHandler;
7 use Drupal\Core\Entity\EntityInterface;
8 use Drupal\Core\Session\AccountInterface;
9 use Drupal\entityqueue\Entity\EntityQueue;
12 * Defines the access control handler for the entity_subqueue entity type.
14 * @see \Drupal\entityqueue\Entity\EntitySubqueue
16 class EntitySubqueueAccessControlHandler extends EntityAccessControlHandler {
21 protected function checkAccess(EntityInterface $entity, $operation, AccountInterface $account) {
22 /** @var \Drupal\entityqueue\EntitySubqueueInterface $entity */
25 return AccessResult::allowedIfHasPermission($account, 'access content');
29 return AccessResult::allowedIfHasPermissions($account, ["update {$entity->bundle()} entityqueue", 'manipulate all entityqueues', 'administer entityqueue'], 'OR');
33 $can_delete_subqueue = AccessResult::allowedIf(!$entity->getQueue()->getHandlerPlugin()->hasAutomatedSubqueues());
35 $access_result = AccessResult
36 ::allowedIfHasPermissions($account, ["delete {$entity->bundle()} entityqueue", 'manipulate all entityqueues', 'administer entityqueue'], 'OR')
37 ->andIf($can_delete_subqueue);
39 return $access_result;
44 return AccessResult::neutral();
51 protected function checkCreateAccess(AccountInterface $account, array $context, $entity_bundle = NULL) {
52 $access_result = AccessResult::allowedIfHasPermissions($account, ["create {$entity_bundle} entityqueue", 'manipulate all entityqueues', 'administer entityqueue'], 'OR');
55 $queue = EntityQueue::load($entity_bundle);
56 $access_result = AccessResult::allowedIf(!$queue->getHandlerPlugin()->hasAutomatedSubqueues());
59 return $access_result;