VOOZH about

URL: https://deepwiki.com/MahoCommerce/maho/7-admin-interface

⇱ Admin Interface | MahoCommerce/maho | DeepWiki


Loading...
Last indexed: 15 May 2026 (ea8ab8)
Menu

Admin Interface

The Admin Interface provides the management console for Maho e-commerce operations. It includes modernized authentication (Passkeys and 2FA), role-based access control (ACL), administrative controllers, data grids, forms with validation, and JavaScript utilities for rich interactions. This document covers the architecture, components, and implementation patterns specific to the administrative backend.

SCOPING: This page has child pages

This is a PARENT page. The following child pages exist and will cover their topics in detail:

Admin Architecture Overview

The Maho admin interface is built upon the adminhtml area. It uses a specific routing system where the frontName is typically admin. Security is enforced through a robust ACL (Access Control List) system defined in adminhtml.xml files app/code/core/Mage/Adminhtml/etc/adminhtml.xml121-156

Authentication and Security

Maho has modernized the admin login flow to include:

Admin Request Lifecycle


Sources:

Interface Components

The admin UI is composed of structural elements defined in the layout system. The default handle in main.xml establishes the root structure, including the header, menu, and breadcrumbs app/design/adminhtml/default/default/layout/main.xml39-91

ComponentCode/Template EntityKey Responsibilities
Menuadminhtml/page_menuRenders the top navigation based on adminhtml.xml app/design/adminhtml/default/default/layout/main.xml69
ACLadminhtml.xmlDefines menu hierarchy and permission resources app/code/core/Mage/Adminhtml/etc/adminhtml.xml14-120
Health CheckMage_Adminhtml_Block_System_Tools_HealthcheckProvides system diagnostic interface app/design/adminhtml/default/default/layout/admin.xml116-120
Email LogMage_Core_Block_Adminhtml_Email_LogAdministrative view of outgoing system emails app/design/adminhtml/default/default/layout/admin.xml123-132
Cron JobsMage_Cron_Block_Adminhtml_Cron_JobsManages scheduled tasks app/code/core/Mage/Cron/etc/adminhtml.xml8-12
Global Searchadminhtml/index/globalSearchProvides quick search functionality across admin entities app/design/adminhtml/default/default/template/page/header.phtml37-47

Data Management Patterns

Maho bridges the gap between server-side PHP logic and client-side interaction using standardized block classes and layout handles. Specific handles like adminhtml_system_account_index load specialized assets such as maho-passkey-tools.js app/design/adminhtml/default/default/layout/admin.xml24-29


Sources:

Grid and Form Components

The admin interface relies heavily on standardized components. Layouts reference specialized blocks for editing permissions, users, and roles app/design/adminhtml/default/default/layout/admin.xml46-90 These components utilize maho-tree.js for hierarchical data like category trees or ACL resource trees app/design/adminhtml/default/default/layout/admin.xml32-43

Maho also provides specific grids for managing "orphaned" ACL resources, which are entries in the database that no longer correspond to defined resources in the adminhtml.xml or api.xml files.

For a deep dive into creating these components, see Grid and Form Components.

Sources:

Admin JavaScript Framework

Maho's admin JS framework provides utilities for building interactive interfaces. A central utility is mahoFetch, an asynchronous wrapper for the Fetch API that automatically handles isAjax flags and JSON response parsing app/design/adminhtml/default/default/template/page/header.phtml37-64 The layout system loads several specialized libraries for UI components like maho-dialog.js, maho-tree.js, and sortable.min.js app/design/adminhtml/default/default/layout/main.xml43-54

For details on the utility functions and event patterns, see Admin JavaScript Utilities.

Sources:

WYSIWYG and Content Editing

Maho has transitioned to the TipTap editor for content management. This is integrated into the layout system via the editor handle app/design/adminhtml/default/default/layout/main.xml119-131 The handle ensures that tiptap/setup.js is loaded only when needed app/design/adminhtml/default/default/layout/main.xml121-122 The system supports dynamic configuration, including widget insertion, variable injection, and image browsing via browser.js app/design/adminhtml/default/default/layout/main.xml123-126

For implementation details, see WYSIWYG Editor (TipTap).

Sources: