etechflow / module-account-links-manager

etechflow/module-account-links-manager

Hide unwanted links from the customer My Account sidebar without editing any templates or layout XML. Multi-select admin config, Hyvä + Magento Open Source + Adobe Commerce compatible.

magento2-module Compatibility: Not yet tested Code Quality: Pending Tests: N/A Security: Pending proprietary
Viewing version 1.1.0. Latest version is 1.2.0. Switch to latest

ETechFlow_AccountLinksManager

Hide unwanted links from the customer My Account sidebar in Magento without editing templates or layout XML. Pure admin config, zero frontend assets, Hyvä-safe by design.

Commercial eTechFlow module. Per-domain HMAC license or eTechFlow bundle key activates the module on your production host. Dev / staging / *.magento.cloud / localhost etc. auto-detect and bypass licensing.

What it does

Two modes:

Mode Behaviour
Hide selected links Every link picked is hidden from the customer sidebar; the rest stays visible.
Show only selected links Only the picked links remain; everything else is hidden.

Standard Magento + Adobe Commerce link names are in the multi-select. For third-party extension links, use the Extra block names textarea — list any layout block name and the module manages it.

Features

Hide individual customer dashboard links
Inverse mode (show only the picked ones)
Configure entirely from admin — zero coding
Works on Magento Open Source + Adobe Commerce + Hyvä
Per-store-view configuration
Custom-extension links via the textarea
Per-domain HMAC licensing + bundle key support
Tideways span instrumentation (ETechFlow_ALM_FilterNav)
Verify CLI (etechflow:alm:verify)
No DB tables, no frontend JS, no CSS

Compatibility

Platform Status
Magento Open Source 2.4.4 – 2.4.8
Adobe Commerce 2.4.4 – 2.4.8 ✓ (includes Reward Points, Gift Card, RMA, Store Credit, Recurring Payments, Invitations)
Hyvä-themed storefronts ✓ (Hyvä keeps the same Html\Links block class)
PHP 8.1 / 8.2 / 8.3 / 8.4

Installation

# Option A — Composer
composer require etechflow/module-account-links-manager:^1.0
bin/magento module:enable ETechFlow_AccountLinksManager
bin/magento setup:upgrade
bin/magento setup:di:compile      # production mode only
bin/magento cache:flush

# Option B — Manual drop-in
cp -r ETechFlow/AccountLinksManager app/code/ETechFlow/AccountLinksManager
bin/magento module:enable ETechFlow_AccountLinksManager
bin/magento setup:upgrade
bin/magento setup:di:compile      # production mode only
bin/magento cache:flush

No database tables are created — settings live in core_config_data.

Configuration

Admin → Stores → Configuration → eTechFlow → Customer Dashboard Links Manager

Field Description
License → Production Environment Yes for live sites, No for dev/staging on non-standard domains.
License → License Key Paste your per-domain key (or bundle key under any eTechFlow module).
General → Enable Module Master switch — turns the filtering on/off without uninstalling.
General → Action Hide selected / Show only selected.
General → Links Multi-select of standard Magento + Adobe Commerce links.
General → Extra block names Newline-separated block names for third-party extension links.

Per-store-view configuration is supported.

Smoke test

bin/magento etechflow:alm:verify

Should print ✅ ALL CHECKS PASSED. v1.0.0 verified.

How it works

The module registers a plugin on Magento\Framework\View\Element\Html\Links::beforeToHtml() (frontend-scoped DI). When the customer-account navigation block is about to render:

  1. Check the module is enabled + licensed.
  2. Read the configured action mode + managed block-name list.
  3. For each child link block, decide if it should be removed (based on mode).
  4. Remove via Layout::unsetChild() — the same mechanism <referenceBlock remove="true"/> uses in layout XML.

Result: the link never renders. No HTML rewriting, no CSS hiding.

Why Hyvä-safe

Hyvä replaces storefront templates and JS but keeps the PHP block classes. The customer-account navigation is still rendered by a class extending Magento\Framework\View\Element\Html\Links. Our plugin hooks the parent class and guards by getNameInLayout() === 'customer_account_navigation' — works on every theme, doesn't touch footer or other Links blocks.

The module ships zero frontend assets: no JS, no CSS, no .phtml overrides. Nothing for Hyvä to clash with.

Uninstall

bin/magento module:disable ETechFlow_AccountLinksManager
bin/magento cache:flush

# Composer:
composer remove etechflow/module-account-links-manager
# Manual:
rm -rf app/code/ETechFlow/AccountLinksManager
bin/magento setup:upgrade
bin/magento cache:flush

Optional cleanup of leftover config entries:

DELETE FROM core_config_data WHERE path LIKE 'etechflow_accountlinks/%';

License

Proprietary — see LICENSE.txt. Commercial licenses available at https://etechflow.com.

Changelog — ETechFlow Account Links Manager

All notable changes to this module. Adheres to Semantic Versioning.


[1.1.0] — 2026-05-29

Security & Licensing

  • Fixed critical bypass bug: isLocallyIssuedKey() previously recreated the 48-hour grace cache on every cache:flush, allowing the local fast-path to bypass IP validation indefinitely. The grace period is now tracked via an issued_at config timestamp written once by Callback.php at purchase time — no longer resettable by a cache flush.
  • Added isExplicitlyRevoked(): A revoked = 1 config flag (set by Revoke.php) now short-circuits all other checks including dev-mode bypass, ensuring suspended licenses are immediately deactivated.
  • Added BlockSaveWithoutLicense plugin: Hooks Magento\\Config\\Model\\Config::save() to block saving etechflow_accountlinks config without a valid license, preventing settings from being applied without activation.

Admin UX

  • License Gate page: Full dark-navy admin UI at Stores → Settings → Account Links Manager showing plan cards, subscription status, and in-Magento Stripe Checkout flow (no external portal redirect required).
  • In-Magento Stripe payment: CreateSession controller builds a Stripe Checkout session server-side; Callback (frontend) receives the session and activates the SP-XXXX key.
  • Success page: Post-purchase success screen shows the activated key with copy button.
  • Fixed form_key injection: Admin AJAX for Stripe session now uses server-side rendered form key instead of window.FORM_KEY fallback.

Navigation Enforcement

  • NavigationPlugin license check: beforeToHtml now returns early if LicenseValidator::isValid() is false — the module is fully dormant when unlicensed.

[1.0.0] — 2026-05-19

Initial commercial release

Hide unwanted links from the customer My Account sidebar without editing templates or layout XML. Two modes:

  • Hide selected links — every link picked is hidden.
  • Show only selected links — only the picked links remain.

Added

  • Admin config: Stores → Configuration → eTechFlow → Customer Dashboard Links Manager. Enable toggle, mode dropdown, multi-select of standard + Adobe Commerce link names, plus an "Extra block names" textarea for third-party extension links.
  • Per-installation HMAC license with bundle-key support. Same pattern as every other eTechFlow module.
  • Profiler instrumentation — wraps the navigation filter in an ETechFlow_ALM_FilterNav Tideways span.
  • Verify CLIbin/magento etechflow:alm:verify.
  • Hyvä-safe — hooks the parent Magento\Framework\View\Element\Html\Links class so Hyvä's re-skinned navigation works without changes.
  • Frontend-only DI registrationetc/frontend/di.xml so the plugin only runs where it matters.

Compatibility

  • Magento Open Source 2.4.4 – 2.4.8
  • Adobe Commerce 2.4.4 – 2.4.8 (includes link names for Reward Points, Gift Card, Gift Registries, RMA, Store Credit, Recurring Payments, Invitations)
  • PHP 8.1 / 8.2 / 8.3 / 8.4
  • All Hyvä child themes
Versions
Version Stability QA Status Compatibility Released
1.2.0 stable Fail Magento 2.4.7-2.4.8 Details 2026-06-06 13:56:54
1.1.0 stable Not tested Not yet tested Details 2026-05-29 07:31:19

Requires 6

Package Constraint
magento/framework ^103.0||^104.0
magento/module-backend ^102.0||^103.0
magento/module-config ^101.2||^102.0
magento/module-customer ^103.0||^104.0
magento/module-store ^101.1||^102.0
php ~8.1.0||~8.2.0||~8.3.0||~8.4.0

Suggests 1

Package Reason
etechflow/module-next-day-eligibility Part of the eTechFlow module bundle — one bundle key activates every eTechFlow module.

No QA results yet

QA pipelines haven't run for this version. Compatibility and quality results appear here once the vendor publishes a tagged release that gets ingested.

License
proprietary
Authors

More from etechflow

View vendor
Make it pay

Turn an existing module into recurring revenue.

If you already maintain a Magento 2 module on GitHub or GitLab, listing it on Packagento takes about five minutes. We mirror your tags, handle distribution signing, and route paid licenses through Stripe Connect, so you can keep shipping the way you already do.