liberusoftware / module-cms-menus
Menu & navigation for Liberu CMS: multi-level menus by location with permission-aware rendering.
Package info
github.com/liberusoftware/module-cms-menus
Type:liberu-module
pkg:composer/liberusoftware/module-cms-menus
Requires
- php: ^8.5
- filament/filament: ^5.11.0
- illuminate/contracts: ^13.38.0
- illuminate/database: ^13.38.0
- illuminate/support: ^13.38.0
- liberusoftware/module-cms-contracts: ^0.1
- liberusoftware/module-cms-core: ^0.1
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-11-14 19:55:24 UTC
README
Repository
Source, issues, and release history: https://github.com/liberusoftware/module-cms-navigation
Composer package: https://packagist.org/packages/liberusoftware/module-cms-navigation
Menu & navigation for Liberu CMS: multi-level menus assigned to locations, with permission-aware rendering.
Models
Menu— a named menu at alocation(header, footer, sidebar, mobile, …).MenuItem— a link withlabel,url,sort, an optionalparent_idfor nesting, and an optionalpermission.
Permission-aware tree
MenuBuilder::tree($menu) returns the visible, nested tree (MenuNode[]) for
the current user. An item with a required permission — and its whole subtree —
is hidden from users who lack it, authorising through the access contract so
this module never touches roles or the users table.
$menu = app(\Liberu\Cms\Menus\Contracts\MenuRepositoryInterface::class)->forLocation('header'); $tree = app(\Liberu\Cms\Menus\MenuBuilder::class)->tree($menu); // [MenuNode{ label, url, children: [...] }, ...] — only what the user may see
Notes
- Owns
cms_menus/cms_menu_items. The legacy hostMenu/MenuItem+ Filament Menu Builder wiring remain during the strangler migration; the admin builder is kept behind this module's contract per the architecture (seedocs/OPEN-QUESTIONS.md).
Public contracts
MenuRepositoryInterface (module-internal), and it depends on the platform
AccessControlInterface.
Events
- Emits / Listens: none.