Part of #3832. Lowest cost, highest value — infra already exists.
Background
faqgroup_right_category table, GroupCategoryPermissionRepository, and MediumPermission::hasPermissionForCategory() already exist (4.2.0-alpha). What is missing is enforcement at call sites and an admin UI to manage restrictions.
Tasks
Acceptance criteria
- Permissions assignable per category via admin UI
- A group restricted to categories X,Y cannot edit/approve/delete FAQs elsewhere, and the UI hides what they cannot act on
- Direct user rights remain global (current behaviour) — documented explicitly
- Tests cover enforcement at controller + query level
- Clear error when action blocked by category restriction
Part of #3832. Lowest cost, highest value — infra already exists.
Background
faqgroup_right_categorytable,GroupCategoryPermissionRepository, andMediumPermission::hasPermissionForCategory()already exist (4.2.0-alpha). What is missing is enforcement at call sites and an admin UI to manage restrictions.Tasks
hasPermission()call sites; replace withhasPermissionForCategory()where a category context exists (FAQ add/edit/delete/approve, translation, category controllers)Faq.phpquery/permission helpers so restricted categories are filtered in listings, not just blocked on actionGroupController; needs the frontend)Acceptance criteria