Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 10
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
InstanceAccessControlHandler
0.00% covered (danger)
0.00%
0 / 10
0.00% covered (danger)
0.00%
0 / 2
56
0.00% covered (danger)
0.00%
0 / 1
 checkAccess
0.00% covered (danger)
0.00%
0 / 8
0.00% covered (danger)
0.00%
0 / 1
42
 checkCreateAccess
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3declare(strict_types=1);
4
5namespace Drupal\display_builder;
6
7use Drupal\Core\Access\AccessResult;
8use Drupal\Core\Entity\EntityAccessControlHandler;
9use Drupal\Core\Entity\EntityInterface;
10use Drupal\Core\Session\AccountInterface;
11
12/**
13 * Defines the access control handler for the instance entity type.
14 *
15 * @see https://www.drupal.org/project/coder/issues/3185082
16 */
17final class InstanceAccessControlHandler extends EntityAccessControlHandler {
18
19  /**
20   * {@inheritdoc}
21   */
22  protected function checkAccess(EntityInterface $entity, $operation, AccountInterface $account): AccessResult {
23    if ($account->hasPermission((string) $this->entityType->getAdminPermission())) {
24      return AccessResult::allowed()->cachePerPermissions();
25    }
26
27    return match ($operation) {
28      'view' => AccessResult::allowedIfHasPermission($account, 'view display_builder_instance'),
29      'update' => AccessResult::allowedIfHasPermission($account, 'edit display_builder_instance'),
30      'delete' => AccessResult::allowedIfHasPermission($account, 'delete display_builder_instance'),
31      default => AccessResult::neutral(),
32    };
33  }
34
35  /**
36   * {@inheritdoc}
37   */
38  protected function checkCreateAccess(AccountInterface $account, array $context, $entity_bundle = NULL): AccessResult {
39    $permissions = ['create display_builder_instance', 'administer display_builder_instance'];
40
41    return AccessResult::allowedIfHasPermissions($account, $permissions, 'OR');
42  }
43
44}