ScheduledUpdateAccessControlHandler.php in Scheduled Updates 8
File
src/ScheduledUpdateAccessControlHandler.php
View source
<?php
namespace Drupal\scheduled_updates;
use Drupal\Core\Access\AccessResult;
use Drupal\Core\Entity\EntityAccessControlHandler;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Session\AccountInterface;
use Drupal\scheduled_updates\Entity\ScheduledUpdate;
class ScheduledUpdateAccessControlHandler extends EntityAccessControlHandler {
protected function checkAccess(EntityInterface $entity, $operation, AccountInterface $account) {
if ($account
->hasPermission('administer scheduled updates')) {
return AccessResult::allowed();
}
if ($operation == 'view') {
return AccessResult::allowedIfHasPermission($account, 'view scheduled update entities');
}
$type_id = $entity
->bundle();
if ($entity
->getOwnerId() == $account
->id()) {
return AccessResult::allowedIfHasPermissions($account, [
"{$operation} any {$type_id} scheduled updates",
"{$operation} own {$type_id} scheduled updates",
], 'OR');
}
else {
return AccessResult::allowedIfHasPermission($account, "{$operation} any {$type_id} scheduled updates");
}
}
protected function checkCreateAccess(AccountInterface $account, array $context, $entity_bundle = NULL) {
$permissions = [
'administer scheduled updates',
"create {$entity_bundle} scheduled updates",
];
return AccessResult::allowedIfHasPermissions($account, $permissions, 'OR');
}
}