tdausner/ neos-media-multiuser
Neos >= 7.3 媒体模块的多用户模块
Requires
- php: >=7.4
- neos/media: >=7.3
- neos/media-browser: >=7.3
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
中进行配置(见下文)。如果配置为非空(''
),则资产集合标题的层次结构将反映在资产集合的显示中
在文件 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/
实现
权限方法 titleStartsWith
、titleEndsWith
和 titleContains
可用于资产标题,并且当复制到 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