PHPackages                             tdausner/neos-media-multiuser - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Admin Panels](/categories/admin)
4. /
5. tdausner/neos-media-multiuser

ActiveProject[Admin Panels](/categories/admin)

tdausner/neos-media-multiuser
=============================

Multiuser mods for Neos &gt;= 7.3 Media module

1.0(2y ago)01CSSPHP &gt;=7.4

Since Aug 17Pushed 2y ago1 watchersCompare

[ Source](https://github.com/tdausner/Neos.Media-multiuser)[ Packagist](https://packagist.org/packages/tdausner/neos-media-multiuser)[ RSS](/packages/tdausner-neos-media-multiuser/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (2)Versions (2)Used By (0)

Neos.Media-multiuser
====================

[](#neosmedia-multiuser)

Currently, the Neos Media module offers no easily feasible path for multi-user or multi-site support.

- **multi-user support**: even on a single site there can be a demand to have users of different departments may not interfere with assets of other departments. Here you'll need multi-user support for assets.
- **multi-site support**: to avoid users for different sites access or utilize assets of not-their-site it is essential to have multi-site support for assets. Again, this is achievable utilizing the Neos.Media multiuser mods.

All this is possible utilizing NEOS' powerful privilege system.

Asset collection names can hold any characters (up to 255). With an agreement of specific asset collection titles in interaction with privilege method `titleStartsWith`for asset collection titles multi-user and multi-site support in the Neos Media module is achieved.

### Configuration example

[](#configuration-example)

In this example the agreement of specific asset collection titles follows the habit of path names using the slash (`/`) character to separate parts of asset collection titles:

```
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

```

The separation character can be configured in the Neos Media Browser module file `Settings.yaml`(see below). If configured to anything else than empty (`''`) the asset collection title hierarchy is reflected in the asset collection's display:

[![image](https://private-user-images.githubusercontent.com/19776511/261394382-e4953b01-06c6-4315-a806-aac303817f52.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzUyMzk5MDcsIm5iZiI6MTc3NTIzOTYwNywicGF0aCI6Ii8xOTc3NjUxMS8yNjEzOTQzODItZTQ5NTNiMDEtMDZjNi00MzE1LWE4MDYtYWFjMzAzODE3ZjUyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA0MDMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNDAzVDE4MDY0N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWZmODdjNTM5ZDE0YzhiY2Y5ODM4MDM0ODkwNjg1MmQxZmMzOTMwYWY3ZDliNmRmZjEyYTQ2ZjgyMWQwYmE0YzQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.saif7h04NiDQSah25vba18L-OnuvBE7kplhPwYBMszE)](https://private-user-images.githubusercontent.com/19776511/261394382-e4953b01-06c6-4315-a806-aac303817f52.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzUyMzk5MDcsIm5iZiI6MTc3NTIzOTYwNywicGF0aCI6Ii8xOTc3NjUxMS8yNjEzOTQzODItZTQ5NTNiMDEtMDZjNi00MzE1LWE4MDYtYWFjMzAzODE3ZjUyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA0MDMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNDAzVDE4MDY0N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWZmODdjNTM5ZDE0YzhiY2Y5ODM4MDM0ODkwNjg1MmQxZmMzOTMwYWY3ZDliNmRmZjEyYTQ2ZjgyMWQwYmE0YzQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.saif7h04NiDQSah25vba18L-OnuvBE7kplhPwYBMszE)

In a file `Policy.yaml` (in some `Configuration` folder) you may define corresponding roles:

```
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
```

Installation
------------

[](#installation)

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

Implementation
--------------

[](#implementation)

The privilege methods `titleStartsWith`, `titleEndsWith` and `titleContains`are available for asset titles and do operate identical on asset collection titles when copied to the php source file `Packages/Application/Neos.Media/Classes/Security/Authorization/Privilege/Doctrine/AssetCollectionConditionGenerator.php`.

Some other Media interface features screw up the separation of assets for different sites:

- opportunity to select "All" collections
    - here you would see all assets of all sites
- Tags
    - it is hard to manage tags to differentiate assets for separate sites

The Neos Media module offers som feature configurations (file `Packages/Neos/Neos.Media.Browser/Configuration/Settings.yaml`) which are extended

```
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: '/'
```

The collection tree separator is evaluated in file `Packages/Application/Neos.Media.Browser/Classes/Controller/AssetController.php` and in the media index file `Packages/Application/Neos.Media.Browser/Resources/Private/Templates/Asset/Index.html`.

Some style adaptions for tree view are done in file `Packages/Application/Neos.Media.Browser/Resources/Public/Styles/MediaBrowser.css`.

For multi-site setup see [Neos PR#4426](https://github.com/neos/neos-development-collection/pull/4426)

###  Health Score

19

—

LowBetter than 10% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity1

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity43

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

997d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/6f36ac634dad2195a1732d9ef2684f3f8e78a74fd41f6c06517cb2efacb47065?d=identicon)[tdausner](/maintainers/tdausner)

---

Top Contributors

[![tdausner](https://avatars.githubusercontent.com/u/19776511?v=4)](https://github.com/tdausner "tdausner (13 commits)")

### Embed Badge

![Health badge](/badges/tdausner-neos-media-multiuser/health.svg)

```
[![Health](https://phpackages.com/badges/tdausner-neos-media-multiuser/health.svg)](https://phpackages.com/packages/tdausner-neos-media-multiuser)
```

###  Alternatives

[jeroennoten/laravel-adminlte

Easy AdminLTE integration with Laravel

4.0k4.8M43](/packages/jeroennoten-laravel-adminlte)[dmstr/yii2-adminlte-asset

AdminLTE backend theme asset bundle for Yii 2.0 Framework

1.1k1.8M67](/packages/dmstr-yii2-adminlte-asset)[dwij/laraadmin

LaraAdmin is a Open source Laravel Admin Panel / CMS which can be used as Admin Backend, Data Management Tool or CRM boilerplate for Laravel with features like CRUD Generation, Module Manager, Media, Menus, Backups and much more

1.6k68.7k](/packages/dwij-laraadmin)[filament/spatie-laravel-media-library-plugin

Filament support for `spatie/laravel-medialibrary`.

1764.8M125](/packages/filament-spatie-laravel-media-library-plugin)[neos/neos

An open source Content Application Platform based on Flow. A set of core Content Management features is resting within a larger context that allows you to build a perfectly customized experience for your users.

116989.0k674](/packages/neos-neos)[bezhansalleh/filament-exceptions

A Simple &amp; Beautiful Pluggable Exception Viewer for FilamentPHP's Admin Panel

193195.9k13](/packages/bezhansalleh-filament-exceptions)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
