tdausner/neos-media-multiuser

该包最新版本(1.0)没有可用的许可信息。

Neos >= 7.3 媒体模块的多用户模块

安装: 0

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

公开问题: 0

语言:CSS

类型:项目

1.0 2023-08-17 18:06 UTC

This package is auto-updated.

Last update: 2024-09-14 23:45:51 UTC


README

目前,Neos 媒体模块没有提供易于实现的路径来实现多用户或多站支持。

  • 多用户支持:即使在单个网站上,也可能需要不同部门的用户不会干扰其他部门的资产。这里需要为资产提供多用户支持。

  • 多站支持:为了避免不同站点的用户访问或使用非本站点的资产,必须为资产提供多站支持。同样,这可以通过使用 Neos.Media 多用户模块实现。

所有这些都可以利用 NEOS 强大的权限系统实现。

资产集合名称可以包含任何字符(最多 255 个)。通过与资产集合标题的权限方法 titleStartsWith 的特定资产集合标题达成一致,在 Neos 媒体模块中实现了多用户和多站支持。

配置示例

在此示例中,特定资产集合标题的约定遵循路径名称的惯例,使用斜杠(/)字符来分隔资产集合标题的部分

hierarchy              asset collection title
---------------------  -------------------------
apples                 apples
 + green               apples/green
 | + granny smith      apples/green/granny smith
 + red                 apples/red
   + fuji              apples/red/fuji
pears                  pears
 + green               pears/green
 | + french butter     pears/green/french butter
 + yellow              pears/yellow
   + bosc              pears/yellow/bosc
   + asian             pears/yellow/asian

分隔符可以在 Neos 媒体浏览器模块文件 Settings.yaml 中进行配置(见下文)。如果配置为非空(''),则资产集合标题的层次结构将反映在资产集合的显示中

image

在文件 Policy.yaml(在某些 Configuration 文件夹中)中,您可以定义相应的角色

privilegeTargets:
  'Neos\Media\Security\Authorization\Privilege\ReadAssetCollectionPrivilege':
    'Apples.Asset:Collection':
      label: 'All apples asset'
      matcher: 'titleStartsWith("apples")'

    'Pears.Asset:Collection':
      label: 'All pears asset'
      matcher: 'titleStartsWith("pears")'

  # copy from Packages/Application/Neos.Media.Browser/Configuration/Policy.yaml
  'Neos\Flow\Security\Authorization\Privilege\Method\MethodPrivilege':
    'Neos.Media.Browser:ManageAssetCollections':
      label: Allowed to manage asset collections
      matcher: 'method(Neos\Media\Browser\Controller\(Asset|Image)Controller->(createAssetCollection|editAssetCollection|updateAssetCollection|deleteAssetCollection)Action()) || method(Neos\Media\Browser\Controller\AssetCollectionController->(create|edit|update|delete)Action())'

roles:

  # don't forget to give the Neos Administrator role access
  'Neos.Neos:Administrator':
    privileges:
      -
        privilegeTarget: 'Apples.Asset:Collection'
        permission: GRANT
      -
        privilegeTarget: 'Pears.Asset:Collection'
        permission: GRANT

  'Apples.Asset:Manager':
    label: 'Apple asset manager'
    description: 'Asset manager for assets in "apples" asset collections'
    parentRoles: ['Neos.Neos:Editor']
    privileges:
      -
        privilegeTarget: 'Apples.Asset:Collection'
        permission: GRANT
      -
        privilegeTarget: 'Neos.Media.Browser:ManageAssetCollections'
        permission: GRANT

  'Pears.Asset:Manager':
    label: 'Pears asset manager'
    description: 'Asset manager for assets in "pears" asset collections'
    parentRoles: ['Neos.Neos:Editor']
    privileges:
      -
        privilegeTarget: 'Pears.Asset:Collection'
        permission: GRANT
      -
        privilegeTarget: 'Neos.Media.Browser:ManageAssetCollections'
        permission: GRANT

安装

git clone git@github.com:tdausner/Neos.Media-multiuser.git
cp -R Neos.Media-multiuser/Packages/* Packages/
rm -rf Neos.Media-multiuser/

实现

权限方法 titleStartsWithtitleEndsWithtitleContains 可用于资产标题,并且当复制到 PHP 源文件 Packages/Application/Neos.Media/Classes/Security/Authorization/Privilege/Doctrine/AssetCollectionConditionGenerator.php 时,在资产集合标题上也操作相同。

其他一些媒体界面功能会干扰不同站点资产的分离

  • 选择“全部”集合的机会
    • 在这里,您将看到所有站点的所有资产
  • 标签
    • 难以管理标签以区分不同站点的资产

Neos 媒体模块提供了一些功能配置(文件 Packages/Neos/Neos.Media.Browser/Configuration/Settings.yaml),这些配置已扩展

Neos:
  Media:
    # ...
    Browser:
      # ...
      features:
        # ...
        
        # Show "all" collections
        showCollectionsAll:
          enable: false
        # Show tags
        showTags:
          enable: false
        # collection hierarchical tree view / separation character
        # set to non-empty character to enable (for example '/')
        collectionTree:
          separator: '/'

集合树分隔符在文件 Packages/Application/Neos.Media.Browser/Classes/Controller/AssetController.php 和媒体索引文件 Packages/Application/Neos.Media.Browser/Resources/Private/Templates/Asset/Index.html 中进行评估。

在文件 Packages/Application/Neos.Media.Browser/Resources/Public/Styles/MediaBrowser.css 中进行了某些针对树视图的样式调整。

有关多站设置,请参阅Neos PR#4426