Account surface: a dedicated "My Account" menu (Tiger_Account_Nav) - #93
Merged
Conversation
The menu follows the SURFACE, not the role. /account no longer reuses the admin menu filtered down — it gets its own sidebar (Tiger_Account_Nav), so an admin on /account sees their personal-account menu, not the back office. - Tiger_Account_Nav — the account-surface twin of Tiger_Admin_Nav: register() + config-discovered navigation-account.ini, deduped/sorted/ACL-gated, always bookended by Overview (→ /account) and an ACL-hidden Admin escape hatch. - Tiger_Controller_Account_Action — the base a module extends to render a user screen in the shared app shell + the account menu. - The self-service profile screens move from the admin menu to /account: the profile module contributes Profile + My Organization via navigation-account.ini (the reference example), and admin Users/Orgs go straight to the manage-everyone Access_* screens. Split: admin manages everyone, account manages yourself. - Unit tests (Tiger_Account_Nav), ADMIN.md section, CHANGELOG. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Merged
WebTigers
added a commit
that referenced
this pull request
Aug 2, 2026
…nu) (#94) Version bump + CHANGELOG. Ships the Tiger_Account_Nav registry + the Tiger_Controller_Account_Action base, /account's own sidebar (menu follows the surface not the role, ACL-gated Admin escape hatch), and the profile screens moved onto the account surface (#93). Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The menu should follow the surface, not the role.
/accountwas reusing the admin menu ACL-filtered down — a sparse, admin-framed sidebar, and an admin visiting/accountwould even see admin items. This gives the account surface its own first-class menu.What changed
Tiger_Account_Nav— the account-surface twin ofTiger_Admin_Nav. A module contributes a user screen viaregister()or a zero-codeconfigs/navigation-account.ini; deduped by key, sorted by (order, label), ACL-/activation-gated.items()always bookends the module items with Overview (→/account) and an Admin escape hatch (→/admin, carrying theAdminControllerresource so the view's deny-by-default ACL shows it only to admins).Tiger_Controller_Account_Action— the base a module extends so its screen renders in the shared app shell with the account menu (not the admin one). Same shell, same screen template (ADMIN.md), just the other sidebar./account— theprofilemodule now contributes "Profile" + "My Organization" vianavigation-account.ini(the reference example), and its controllers extend the new base. The admin Users/Organizations items go straight to the manage-everyoneAccess_*screens.The organizing rule: admin manages everyone (
Access_*); the account surface manages yourself (Profile_*).Tests / docs
tests/Unit/Account/NavTest.php— register/shape/dedupe/sort/bookends + real config-discovery of the profile module's contribution (db-less boot).Tiger_Controller_Account_Action+AccountController::init()are exercised by the existingProfile/ControllersTestandAccountControllerTest.[Unreleased].🤖 Generated with Claude Code