X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;f=web%2Fmodules%2Fcontrib%2Fmedia_entity%2Fsrc%2FMediaAccessController.php;fp=web%2Fmodules%2Fcontrib%2Fmedia_entity%2Fsrc%2FMediaAccessController.php;h=5b097877b23817c9cf746ee1fdd2b2a6743bcbd8;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hp=0000000000000000000000000000000000000000;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad;p=yaffs-website diff --git a/web/modules/contrib/media_entity/src/MediaAccessController.php b/web/modules/contrib/media_entity/src/MediaAccessController.php new file mode 100644 index 000000000..5b097877b --- /dev/null +++ b/web/modules/contrib/media_entity/src/MediaAccessController.php @@ -0,0 +1,46 @@ +hasPermission('administer media')) { + return AccessResult::allowed()->cachePerPermissions(); + } + + $is_owner = ($account->id() && $account->id() == $entity->getPublisherId()) ? TRUE : FALSE; + switch ($operation) { + case 'view': + return AccessResult::allowedIf($account->hasPermission('view media') && $entity->status->value); + + case 'update': + return AccessResult::allowedIf(($account->hasPermission('update media') && $is_owner) || $account->hasPermission('update any media'))->cachePerPermissions()->cachePerUser()->addCacheableDependency($entity); + + case 'delete': + return AccessResult::allowedIf(($account->hasPermission('delete media') && $is_owner) || $account->hasPermission('delete any media'))->cachePerPermissions()->cachePerUser()->addCacheableDependency($entity); + } + + // No opinion. + return AccessResult::neutral()->cachePerPermissions(); + } + + /** + * {@inheritdoc} + */ + protected function checkCreateAccess(AccountInterface $account, array $context, $entity_bundle = NULL) { + return AccessResult::allowedIfHasPermission($account, 'create media'); + } + +}