Mercurial > hg > cmmr2012-drupal-site
annotate core/modules/shortcut/src/ShortcutSetAccessControlHandler.php @ 4:a9cd425dd02b
Update, including to Drupal core 8.6.10
author | Chris Cannam |
---|---|
date | Thu, 28 Feb 2019 13:11:55 +0000 |
parents | c75dbcec494b |
children |
rev | line source |
---|---|
Chris@0 | 1 <?php |
Chris@0 | 2 |
Chris@0 | 3 namespace Drupal\shortcut; |
Chris@0 | 4 |
Chris@0 | 5 use Drupal\Core\Access\AccessResult; |
Chris@0 | 6 use Drupal\Core\Entity\EntityInterface; |
Chris@0 | 7 use Drupal\Core\Entity\EntityAccessControlHandler; |
Chris@0 | 8 use Drupal\Core\Session\AccountInterface; |
Chris@0 | 9 |
Chris@0 | 10 /** |
Chris@0 | 11 * Defines the access control handler for the shortcut set entity type. |
Chris@0 | 12 * |
Chris@0 | 13 * @see \Drupal\shortcut\Entity\ShortcutSet |
Chris@0 | 14 */ |
Chris@0 | 15 class ShortcutSetAccessControlHandler extends EntityAccessControlHandler { |
Chris@0 | 16 |
Chris@0 | 17 /** |
Chris@0 | 18 * {@inheritdoc} |
Chris@0 | 19 */ |
Chris@0 | 20 protected function checkAccess(EntityInterface $entity, $operation, AccountInterface $account) { |
Chris@0 | 21 switch ($operation) { |
Chris@0 | 22 case 'view': |
Chris@4 | 23 return AccessResult::allowedIfHasPermission($account, 'access shortcuts'); |
Chris@0 | 24 case 'update': |
Chris@0 | 25 if ($account->hasPermission('administer shortcuts')) { |
Chris@0 | 26 return AccessResult::allowed()->cachePerPermissions(); |
Chris@0 | 27 } |
Chris@0 | 28 if (!$account->hasPermission('access shortcuts')) { |
Chris@0 | 29 return AccessResult::neutral()->cachePerPermissions(); |
Chris@0 | 30 } |
Chris@0 | 31 return AccessResult::allowedIf($account->hasPermission('customize shortcut links') && $entity == shortcut_current_displayed_set($account))->cachePerPermissions()->addCacheableDependency($entity); |
Chris@0 | 32 |
Chris@0 | 33 case 'delete': |
Chris@0 | 34 return AccessResult::allowedIf($account->hasPermission('administer shortcuts') && $entity->id() != 'default')->cachePerPermissions(); |
Chris@0 | 35 |
Chris@0 | 36 default: |
Chris@0 | 37 // No opinion. |
Chris@0 | 38 return AccessResult::neutral(); |
Chris@0 | 39 } |
Chris@0 | 40 } |
Chris@0 | 41 |
Chris@0 | 42 /** |
Chris@0 | 43 * {@inheritdoc} |
Chris@0 | 44 */ |
Chris@0 | 45 protected function checkCreateAccess(AccountInterface $account, array $context, $entity_bundle = NULL) { |
Chris@0 | 46 return AccessResult::allowedIfHasPermission($account, 'administer shortcuts')->orIf(AccessResult::allowedIfHasPermissions($account, ['access shortcuts', 'customize shortcut links'], 'AND')); |
Chris@0 | 47 } |
Chris@0 | 48 |
Chris@0 | 49 } |