How Can I perform this event: if some one from Magento admin delete any customer then write a log which admin user delete that customer and date and time of the action.
Any help would be appreciated.
Thanks in advance..!
Magento Stack Exchange is a question and answer site for users of the Magento e-Commerce platform. It only takes a minute to sign up.
Sign up to join this communityYou can make a plugin for Magento\User\Model\ResourceModel\User
class
di.xml
app/code/Vendor/Module/etc/adminhtml/di.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\User\Model\ResourceModel\User">
<plugin name="delete_user_action" type="Vendor\Module\Plugin\User\Delete" sortOrder="1"/>
</type>
</config>
Delete.php
app/code/Vendor/Module/Plugin/User/Delete.php
<?php
namespace Vendor\Module\Plugin\User;
use Psr\Log\LoggerInterface;
class Delete
{
/**
* @var Logger
*/
protected $logger;
/**
* @var Session
*/
protected $authSession;
public function __construct(
LoggerInterface $logger,
\Magento\Backend\Model\Auth\Session $authSession
) {
$this->logger = $logger;
$this->authSession = $authSession;
}
public function aroundDelete(\Magento\User\Model\ResourceModel\User $user, callable $proceed, $object)
{
$object->load($object->getId());
$result = $proceed($object);
$object->afterDelete();
$this->logger->debug('START :-'.__METHOD__ . ' - ' . __LINE__);
if ($this->authSession->isLoggedIn()) {
$adminUserName = $this->authSession->getUser()->getUserName();
}
$date = date('Y/m/d H:i:s');
$message = sprintf(' %s has Deleted Customer', $adminUserName);
$this->logger->debug($date. ' => '.$message);
$this->logger->debug('END :-'.__METHOD__ . ' - ' . __LINE__);
return $result;
}
}