X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;f=web%2Fmodules%2Fcontrib%2Fentityqueue%2Fsrc%2FEntitySubqueueAccessControlHandler.php;fp=web%2Fmodules%2Fcontrib%2Fentityqueue%2Fsrc%2FEntitySubqueueAccessControlHandler.php;h=f5a81290d20e0b30d81a067538eb23cfdd2987b0;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hp=0000000000000000000000000000000000000000;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad;p=yaffs-website diff --git a/web/modules/contrib/entityqueue/src/EntitySubqueueAccessControlHandler.php b/web/modules/contrib/entityqueue/src/EntitySubqueueAccessControlHandler.php new file mode 100644 index 000000000..f5a81290d --- /dev/null +++ b/web/modules/contrib/entityqueue/src/EntitySubqueueAccessControlHandler.php @@ -0,0 +1,62 @@ +bundle()} entityqueue", 'manipulate all entityqueues', 'administer entityqueue'], 'OR'); + break; + + case 'delete': + $can_delete_subqueue = AccessResult::allowedIf(!$entity->getQueue()->getHandlerPlugin()->hasAutomatedSubqueues()); + + $access_result = AccessResult + ::allowedIfHasPermissions($account, ["delete {$entity->bundle()} entityqueue", 'manipulate all entityqueues', 'administer entityqueue'], 'OR') + ->andIf($can_delete_subqueue); + + return $access_result; + break; + + default: + // No opinion. + return AccessResult::neutral(); + } + } + + /** + * {@inheritdoc} + */ + protected function checkCreateAccess(AccountInterface $account, array $context, $entity_bundle = NULL) { + $access_result = AccessResult::allowedIfHasPermissions($account, ["create {$entity_bundle} entityqueue", 'manipulate all entityqueues', 'administer entityqueue'], 'OR'); + + if ($entity_bundle) { + $queue = EntityQueue::load($entity_bundle); + $access_result = AccessResult::allowedIf(!$queue->getHandlerPlugin()->hasAutomatedSubqueues()); + } + + return $access_result; + } + +}