Magento_Customer module
This module serves to handle the customer data (Customer, Customer Address and Customer Group entities) both in the admin panel and the storefront. For customer passwords, the module implements upgrading hashes.
Installation
The Magento_Customer module is one of the base Magento 2 modules. You cannot disable or uninstall this module. This module is dependent on the following modules:
Magento_Eav
Magento_Directory
The following modules depend on this module:
Magento_Captcha
Magento_Catalog
Magento_CatalogCustomerGraphQl
Magento_CatalogRule
Magento_CompareListGraphQl
Magento_CustomerAnalytics
Magento_CustomerGraphQl
Magento_EncryptionKey
Magento_LoginAsCustomerGraphQl
Magento_NewRelicReporting
Magento_ProductAlert
Magento_Reports
Magento_Sales
Magento_Swatches
Magento_Tax
Magento_Wishlist
Magento_WishlistGraphQl
The Magento_Customer module creates the following tables in the database:
customer_entity
customer_entity_datetime
customer_entity_decimal
customer_entity_int
customer_entity_text
customer_entity_varchar
customer_address_entity
customer_address_entity_datetime
customer_address_entity_decimal
customer_address_entity_int
customer_address_entity_text
customer_address_entity_varchar
customer_group
customer_eav_attribute
customer_form_attribute
customer_eav_attribute_website
customer_visitor
customer_log
For information about a module installation in Magento 2, see Enable or disable modules.
Extensibility
Extension developers can interact with the Magento_Customer module. For more information about the Magento extension mechanism, see Magento plugins.
The Magento dependency injection mechanism enables you to override the functionality of the Magento_Customer module.
A lot of functionality in the module is on JavaScript, use mixins to extend it.
Events
The module dispatches the following events:
Block
adminhtml_block_html_before
event in the\Magento\Customer\Block\Adminhtml\Edit\Tab\Carts::_toHtml
method. Parameters:block
is a$this
object (Magento\Customer\Block\Adminhtml\Edit\Tab\Carts
class)
Controller
customer_register_success
event in the\Magento\Customer\Controller\Account\CreatePost::execute
method. Parameters:account_controller
is a$this
object (\Magento\Customer\Controller\Account\CreatePost
class)customer
is a customer object (\Magento\Customer\Model\Data\Customer
class)
customer_account_edited
event in the\Magento\Customer\Controller\Account\EditPost::dispatchSuccessEvent
method. Parameters:email
is a customer email (string
type)
adminhtml_customer_prepare_save
event in the\Magento\Customer\Controller\Adminhtml\Index\Save::execute
method. Parameters:customer
is a customer object to be saved (\Magento\Customer\Model\Data\Customer
class)request
is a request object with the\Magento\Framework\App\RequestInterface
interface.
adminhtml_customer_save_after
event in the\Magento\Customer\Controller\Adminhtml\Index\Save::execute
method. Parameters:customer
is a customer object (\Magento\Customer\Model\Data\Customer
class)request
is a request object with the\Magento\Framework\App\RequestInterface
interface.
Model
customer_customer_authenticated
event in the\Magento\Customer\Model\AccountManagement::authenticate
method. Parameters:model
is a customer object (\Magento\Customer\Model\Customer
class)password
is a customer password (string
type)
customer_data_object_login
event in the\Magento\Customer\Model\AccountManagement::authenticate
method. Parameters:customer
is a customer object (\Magento\Customer\Model\Data\Customer
class)
customer_address_format
event in the\Magento\Customer\Model\Address\AbstractAddress::format
method. Parameters:type
is a address format type (string
type)address
is a$this
object (\Magento\Customer\Model\Address\AbstractAddress
class)
customer_customer_authenticated
event in the\Magento\Customer\Model\Customer::authenticate
method. Parameters:model
is a customer object (\Magento\Customer\Model\Customer
class)password
is a customer password (string
type)
customer_save_after_data_object
event in the\Magento\Customer\Model\ResourceModel\CustomerRepository::save
method. Parameters:customer_data_object
is a saved customer object (\Magento\Customer\Model\Data\Customer
class)orig_customer_data_object
is a previous customer object (\Magento\Customer\Model\Data\Customer
class)delegate_data
is a customer additional data (array
type)
customer_session_init
event in the\Magento\Customer\Model\Session::__construct
method. Parameters:customer_session
is a$this
object (\Magento\Customer\Model\Session
class)
customer_login
event in the\Magento\Customer\Model\Session::setCustomerAsLoggedIn
method. Parameters:customer
is a$this
object (\Magento\Customer\Model\Customer
class)
customer_data_object_login
event in the\Magento\Customer\Model\Session::setCustomerAsLoggedIn
method. Parameters:customer
is a$this
object (\Magento\Customer\Model\Data\Customer
class)
customer_login
event in the\Magento\Customer\Model\Session::setCustomerDataAsLoggedIn
method. Parameters:customer
is a$this
object (\Magento\Customer\Model\Customer
class)
customer_data_object_login
event in the\Magento\Customer\Model\Session::setCustomerDataAsLoggedIn
method. Parameters:customer
is a$this
object (\Magento\Customer\Model\Data\Customer
class)
customer_logout
event in the\Magento\Customer\Model\Session::logout
method. Parameters:customer
is a$this
object (\Magento\Customer\Model\Customer
class)
visitor_init
event in the\Magento\Customer\Model\Visitor::logout
method. Parameters:visitor
is a$this
object (\Magento\Customer\Model\Visitor
class)
visitor_activity_save
event in the\Magento\Customer\Model\Visitor::saveByRequest
method. Parameters:visitor
is a$this
object (\Magento\Customer\Model\Visitor
class)
For information about an event in Magento 2, see Events and observers.
Layouts
This module introduces the following layouts in the view/frontend/layout
and view/adminhtml/layout
directories:
view/adminhtml/layout
:customer_address_edit
customer_group_index
customer_index_cart
customer_index_carts
customer_index_edit
customer_index_index
customer_index_newsletter
customer_index_orders
customer_index_viewcart
customer_index_viewwishlist
customer_online_index
view/frontend/layout
:customer_account
customer_account_confirmation
customer_account_create
customer_account_createpassword
customer_account_edit
customer_account_forgotpassword
customer_account_index
customer_account_login
customer_account_logoutsuccess
customer_address_index
default
For more information about a layout in Magento 2, see the Layout documentation.
Public APIs
Data
\Magento\Customer\Api\Data\AddressInterface
:- customer address data
\Magento\Customer\Api\Data\AddressSearchResultsInterface
:- customer address search result data
\Magento\Customer\Api\Data\AttributeMetadataInterface
:- customer attribute metadata
\Magento\Customer\Api\Data\CustomerInterface
:- customer data
\Magento\Customer\Api\Data\CustomerSearchResultsInterface
:- customer search result data
\Magento\Customer\Api\Data\GroupInterface
:- customer group data
\Magento\Customer\Api\Data\GroupSearchResultsInterface
:- customer group search result data
\Magento\Customer\Api\Data\OptionInterface
:- option data
\Magento\Customer\Api\Data\RegionInterface
:- customer address region data
\Magento\Customer\Api\Data\ValidationResultsInterface
:- validation results data
\Magento\Customer\Api\Data\ValidationRuleInterface
:- validation rule data
Metadata
\Magento\Customer\Api\MetadataInterface
:- retrieve all attributes filtered by form code
- retrieve attribute metadata by attribute code
- get all attribute metadata
- get custom attributes metadata for the given data interface
\Magento\Customer\Api\MetadataManagementInterface
:- check whether attribute is searchable in admin grid and it is allowed
- check whether attribute is filterable in admin grid and it is allowed
Customer address
\Magento\Customer\Api\AddressMetadataInterface
:- retrieve information about customer address attributes metadata
- extends
Magento\Customer\MetadataInterface
\Magento\Customer\Api\AddressMetadataManagementInterface
:- manage customer address attributes metadata
- extends
Magento\Customer\Api\MetadataManagementInterface
\Magento\Customer\Api\AddressRepositoryInterface
:- save customer address
- get customer address by address ID
- retrieve customers addresses matching the specified criteria
- delete customer address
- delete customer address by address ID
\Magento\Customer\Model\Address\AddressModelInterface
- get street line by number
- create fields street1, street2, etc
\Magento\Customer\Model\Address\ValidatorInterface
- validate address instance
\Magento\Customer\Model\Address\CustomAttributeListInterface
- retrieve list of customer addresses custom attributes
Customer
\Magento\Customer\Api\AccountManagementInterface
:- create customer account
- create customer account using provided hashed password
- validate customer data
- check if customer can be deleted
- activate a customer account using customer EMAIL and key that was sent in a confirmation email
- activate a customer account using customer ID and key that was sent in a confirmation email
- authenticate a customer by username and password
- change customer password by customer EMAIL
- change customer password by customer ID
- send an email to the customer with a password reset link
- reset customer password
- check if password reset token is valid
- gets the account confirmation status
- resend confirmation email
- check if given email is associated with a customer account in given website
- check store availability for customer given the customer ID
- retrieve default billing address for the given customer ID
- retrieve default shipping address for the given customer ID
- get hashed password
\Magento\Customer\Api\CustomerManagementInterface
:- provide the number of customer count
\Magento\Customer\Api\CustomerMetadataInterface
:- retrieve information about customer attributes metadata
- extends
Magento\Customer\MetadataInterface
\Magento\Customer\Api\CustomerMetadataManagementInterface
:- manage customer attributes metadata
- extends
Magento\Customer\Api\MetadataManagementInterface
\Magento\Customer\Api\CustomerNameGenerationInterface
:- concatenate all customer name parts into full customer name
\Magento\Customer\Api\CustomerRepositoryInterface
:- create or update a customer
- get customer by customer EMAIL
- get customer by customer ID
- retrieve customers which match a specified criteria
- delete customer
- delete customer by customer ID
\Magento\Customer\Model\AuthenticationInterface
:- process customer authentication failure by customer ID
- unlock customer by customer ID
- check if a customer is locked by customer ID
- authenticate customer by customer ID and password
\Magento\Customer\Model\EmailNotificationInterface
:- send notification to customer when email and/or password changed
- send email with new customer password
- send email with reset password confirmation link
- send email with new account related information
Customer group
\Magento\Customer\Api\CustomerGroupConfigInterface
:- set system default customer group
\Magento\Customer\Api\GroupManagementInterface
:- check if customer group can be deleted
- get default customer group
- get customer group representing customers not logged in
- get all customer groups except group representing customers not logged in
- get customer group representing all customers
\Magento\Customer\Api\GroupRepositoryInterface
:- save customer group
- get customer group by group ID
- retrieve customer groups which match a specified criteria
- delete customer group
- delete customer group by ID
\Magento\Customer\Model\Group\RetrieverInterface
- get current customer group id from session
\Magento\Customer\Model\Customer\Source\GroupSourceLoggedInOnlyInterface
- get customer group attribute source
For information about a public API in Magento 2, see Public interfaces & APIs.
UI components
You can extend customer and customer address updates using the configuration files located in the view/adminhtml/ui_component
and view/base/ui_component
directories:
view/adminhtml/ui_component
:customer_address_form
customer_address_listing
customer_group_listing
customer_listing
customer_online_grid
view/base/ui_component
:customer_form
For information about a UI component in Magento 2, see Overview of UI components.
Additional information
More information can get at articles:
- Customer Configurations
- Customer Attributes
- Customer Address Attributes
- EAV And Extension Attributes
- 2.4.x Release information
Console commands
Magento_Customer provides console commands:
bin/magento customer:hash:upgrade
- upgrades a customer password hash to the latest hash algorithm
Cron options
Cron group configuration can be set at etc/crontab.xml
:
visitor_clean
- clean visitor's outdated records
Learn how to configure and run cron in Magento..
Indexers
This module introduces the following indexers:
customer_grid
- customer grid indexer
Learn how to manage the indexers.