Mercurial > hg > cmmr2012-drupal-site
diff core/modules/media/src/MediaAccessControlHandler.php @ 5:12f9dff5fda9 tip
Update to Drupal core 8.7.1
author | Chris Cannam |
---|---|
date | Thu, 09 May 2019 15:34:47 +0100 |
parents | a9cd425dd02b |
children |
line wrap: on
line diff
--- a/core/modules/media/src/MediaAccessControlHandler.php Thu Feb 28 13:11:55 2019 +0000 +++ b/core/modules/media/src/MediaAccessControlHandler.php Thu May 09 15:34:47 2019 +0100 @@ -24,11 +24,28 @@ $is_owner = ($account->id() && $account->id() === $entity->getOwnerId()); switch ($operation) { case 'view': - $access_result = AccessResult::allowedIf($account->hasPermission('view media') && $entity->isPublished()) - ->cachePerPermissions() - ->addCacheableDependency($entity); - if (!$access_result->isAllowed()) { - $access_result->setReason("The 'view media' permission is required and the media item must be published."); + if ($entity->isPublished()) { + $access_result = AccessResult::allowedIf($account->hasPermission('view media')) + ->cachePerPermissions() + ->addCacheableDependency($entity); + if (!$access_result->isAllowed()) { + $access_result->setReason("The 'view media' permission is required when the media item is published."); + } + } + elseif ($account->hasPermission('view own unpublished media')) { + $access_result = AccessResult::allowedIf($is_owner) + ->cachePerPermissions() + ->cachePerUser() + ->addCacheableDependency($entity); + if (!$access_result->isAllowed()) { + $access_result->setReason("The user must be the owner and the 'view own unpublished media' permission is required when the media item is unpublished."); + } + } + else { + $access_result = AccessResult::neutral() + ->cachePerPermissions() + ->addCacheableDependency($entity) + ->setReason("The user must be the owner and the 'view own unpublished media' permission is required when the media item is unpublished."); } return $access_result;