onedrop/restrictedfiles

此软件包最新版本(1.2.0)没有可用的许可信息。

1.2.0 2017-12-20 12:51 UTC

This package is auto-updated.

Last update: 2024-09-25 06:33:52 UTC


README

它做什么

此软件包允许Neos编辑器通过Neos MediaBrowser保护资源。

您可以定义一个应受保护的集合标题列表,此软件包将内部处理资源操作以确保文件受到保护。

此软件包依赖于 wwwision/privateresources,您可以检查该软件包的配置来了解如何配置受保护的资源本身。

配置

您应该在Neos后端创建一个AssetCollection,并配置该集合的标题为受保护。

Onedrop:
  RestrictedFiles:
    collectionNames: ['Protected']

限制下载权限

此软件包还提供了一种简单的方法来限制文件下载到可以分配给任何角色的 privilegeTarget

要授予文件访问权限,只需将此privilegeTarget添加到角色中

roles:
  'Some.Package:SomeUser':
    privileges:
      -
        privilegeTarget: 'Onedrop.RestrictedFiles:Download'
        permission: GRANT

您可以通过设置来禁用此功能

roles:
  'Neos.Flow:Everybody':
    privileges:
      -
        privilegeTarget: 'Onedrop.RestrictedFiles:Download'
        permission: GRANT

处理未经授权的下载尝试

如果发生未经授权的下载,此软件包将抛出 \Neos\Flow\Security\Exception\AccessDeniedException。您可以订阅一个信号来更改该行为,例如重定向到页面。

示例

<?php 

public function redirectToReferer(PersistentResource $resource, HttpRequest $httpRequest)
{
    $referer = $httpRequest->getHeader('Referer');
    if (!empty($referer)) {
        $refererUri = new Uri($referer);
        if ($refererUri->getHost() === $httpRequest->getUri()->getHost()) {
            $refererUri->setQuery('--restricted-files[accessDenied]=true');
            header('Location: ' . $refererUri->__toString());
            exit();
        }
    }
}

下载跟踪

默认情况下,此软件包跟踪所有经过身份验证账户的下载。

您可以通过设置来禁用此功能

Onedrop:
  RestrictedFiles:
    trackProtectedDownloadsByAccount: false

工作原理

它使用doctrine生命周期钩子在Flow资源集合之间复制资源,如果资产被移动到Neos后端的受保护资产集合中(或者当然上传)。

为了检查访问权限,它使用PrivateResources软件包发出的信号。