Skip to content

fix(sources): avoid loading mgr Context in MediaSource findPolicy - #80

Open
Ibochkarev wants to merge 3 commits into
3.xfrom
fix/16212-modmediasource-findpolicy-context
Open

fix(sources): avoid loading mgr Context in MediaSource findPolicy#80
Ibochkarev wants to merge 3 commits into
3.xfrom
fix/16212-modmediasource-findpolicy-context

Conversation

@Ibochkarev

@Ibochkarev Ibochkarev commented Aug 21, 2026

Copy link
Copy Markdown
Member

Что сделано

modMediaSource::findPolicy() по-прежнему ищет Media Source ACL с context_key = mgr (как UI менеджера). Он больше не вызывает getContext('mgr') из фронт-запроса только ради чтения access_media_source_enabled.

Если текущий контекст уже mgr, или mgr уже в $modx->contexts, используется опция этого контекста. Иначе используется системная опция.

Зачем нужно

На фронтенде форсированная загрузка объекта mgr Context может INFO-логировать отказы ACL для анонимных пользователей (Principal 0 does not have permission to load object of class modContext with primary key: mgr). См. modxcms#16212.

Более ранний подход менял хардкод mgr ACL-scope на контекст запроса. Мейнтейнеры указали, что Media Source ACL — только менеджерные (#16214, комментарии от @Mark-H, @theboxer, @smg6511, @opengeek), поэтому это изменение здесь не используется.

Как проверить

  1. Фронтенд: загрузите страницу, трогающую media source, как аноним. Подтвердите, что лог больше не заполняется mgr Context load INFO-строками из findPolicy().
  2. Менеджер: откройте Media Sources / file browser под пользователем с source ACL и без. Доступ должен матчить прежнее поведение менеджера.
  3. phpunit --filter MediaSourceFindPolicyTest

Связанные

Refs modxcms#16212
Заменяет подход, обсуждаемый в modxcms#16214 для этого конкретного INFO-noise-пути.

Оригинал: modxcms#16845

…xcms#16212)

Replace hardcoded $context = 'mgr' with the same defaulting as modContext
and modResource: use argument when non-empty, else current request context.
Fixes mgr-context errors when serving pages in web context.
Keep Media Source ACL lookups scoped to mgr, but read
access_media_source_enabled without getContext('mgr') on the frontend.
That stops anonymous INFO noise without weakening manager-only ACLs (modxcms#16212).
Move the modxcms#16212 regression test into its own PSR-12 file so PHPCS does
not blame pre-existing style debt in modMediaSourceTest.
@Ibochkarev Ibochkarev changed the title fix(sources): не грузить mgr Context в findPolicy MediaSource fix(sources): avoid loading mgr Context in MediaSource findPolicy Aug 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant