Skip to content

Account surface: a dedicated "My Account" menu (Tiger_Account_Nav) - #93

Merged
WebTigers merged 1 commit into
mainfrom
feat/account-nav
Aug 2, 2026
Merged

Account surface: a dedicated "My Account" menu (Tiger_Account_Nav)#93
WebTigers merged 1 commit into
mainfrom
feat/account-nav

Conversation

@WebTigers

Copy link
Copy Markdown
Owner

The menu should follow the surface, not the role. /account was reusing the admin menu ACL-filtered down — a sparse, admin-framed sidebar, and an admin visiting /account would even see admin items. This gives the account surface its own first-class menu.

What changed

  • Tiger_Account_Nav — the account-surface twin of Tiger_Admin_Nav. A module contributes a user screen via register() or a zero-code configs/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 the AdminController resource 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.
  • Profile screens move to /account — the profile module now contributes "Profile" + "My Organization" via navigation-account.ini (the reference example), and its controllers extend the new base. The admin Users/Organizations items go straight to the manage-everyone Access_* 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 existing Profile/ControllersTest and AccountControllerTest.
  • New ADMIN.md section "The account surface — a 'My Account' screen"; CHANGELOG [Unreleased].

🤖 Generated with Claude Code

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>
@WebTigers
WebTigers merged commit b5f8765 into main Aug 2, 2026
12 checks passed
@WebTigers
WebTigers deleted the feat/account-nav branch August 2, 2026 17:04
@WebTigers WebTigers mentioned this pull request Aug 2, 2026
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>
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