যেহেতু কেউ আমার কাছে যা যা জিজ্ঞাসা করছিল তা না করার উপযুক্ত কারণ নিয়ে আসেনি আমি ধরে নিই যে আমার পদ্ধতিটি নিরাপদ। সুতরাং, এই প্রশ্নটি খোলা না রাখার জন্য, আমি কোডটিকে উত্তর হিসাবে যুক্ত করার এবং এটি স্বীকৃত হিসাবে চিহ্নিত করার সিদ্ধান্ত নিয়েছি।
সুতরাং Easylife_Simulate
নিম্নলিখিত ফাইলগুলির সাথে আমার একটি নতুন এক্সটেনশান ডাকা হয়েছে :
app/etc/modules/Easylife_Simulte.xml
- ডিকোলেশন ফাইল:
<?xml version="1.0"?>
<config>
<modules>
<Easylife_Simulate>
<codePool>local</codePool>
<active>true</active>
<depends>
<Mage_Customer />
</depends>
</Easylife_Simulate>
</modules>
</config>
app/code/local/Easylife/Simulte/etc/config.xml
- কনফিগারেশন ফাইল
<?xml version="1.0"?>
<config>
<modules>
<Easylife_Simulate>
<version>0.0.1</version>
</Easylife_Simulate>
</modules>
<global>
<helpers>
<easylife_simulate>
<class>Easylife_Simulate_Helper</class>
</easylife_simulate>
</helpers>
<models>
<easylife_simulate>
<class>Easylife_Simulate_Model</class>
</easylife_simulate>
</models>
<resources>
<easylife_simulate_setup>
<setup>
<module>Easylife_Simulate</module>
<class>Mage_Customer_Model_Resource_Setup</class>
</setup>
</easylife_simulate_setup>
</resources>
</global>
<frontend>
<routers>
<easylife_simulate>
<use>standard</use>
<args>
<module>Easylife_Simulate</module>
<frontName>simulate</frontName>
</args>
</easylife_simulate>
</routers>
</frontend>
<adminhtml>
<events>
<controller_action_layout_render_before_adminhtml_customer_edit>
<observers>
<easylife_simulate>
<class>easylife_simulate/observer</class>
<method>addAutoLoginButton</method>
</easylife_simulate>
</observers>
</controller_action_layout_render_before_adminhtml_customer_edit>
</events>
</adminhtml>
<admin>
<routers>
<adminhtml>
<args>
<modules>
<Easylife_Simulate before="Mage_Adminhtml">Easylife_Simulate_Adminhtml</Easylife_Simulate>
</modules>
</args>
</adminhtml>
</routers>
</admin>
</config>
app/code/local/Easylife/Simulate/sql/easylife_simulate_setup/install-0.0.1.php
- স্ক্রিপ্ট ইনস্টল করুন - একটি নতুন গ্রাহক বৈশিষ্ট্য যুক্ত করে:
<?php
$this->addAttribute('customer', 'login_key', array(
'type' => 'text',
'label' => 'Auto login key',
'input' => 'text',
'position' => 999,
'required' => false
));
app/code/local/Easylife/Simulate/Model/Observer.php
- গ্রাহক অ্যাডমিন সম্পাদনা ফর্মটিতে একটি বোতাম যুক্ত করতে পর্যবেক্ষক
<?php
class Easylife_Simulate_Model_Observer extends Mage_ProductAlert_Model_Observer{
public function addAutoLoginButton($observer){
$block = Mage::app()->getLayout()->getBlock('customer_edit');
if ($block){
$customer = Mage::registry('current_customer');
$block->addButton('login', array(
'label' => Mage::helper('customer')->__('Login as this customer'),
'onclick' => 'window.open(\''.Mage::helper('adminhtml')->getUrl('adminhtml/simulate/login', array('id'=>$customer->getId())).'\')',
), 100);
}
}
}
app/code/local/Easylife/Simulate/controllers/Adminhtml/SimulateController.php
- অ্যাডমিন কন্ট্রোলার যা উপরের উত্পন্ন উত্পন্ন বাটনে ক্লিক করে।
<?php
class Easylife_Simulate_Adminhtml_SimulateController extends Mage_Adminhtml_Controller_Action{
public function loginAction(){
$id = $this->getRequest()->getParam('id');
$customer = Mage::getModel('customer/customer')->load($id);
if (!$customer->getId()){
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('easylife_simulate')->__('Customer does not exist'));
$this->_redirectReferer();
}
else {
$key = Mage::helper('core')->uniqHash();
$customer->setLoginKey($key)->save();
$this->_redirect('simulate/index/index', array('id'=>$customer->getId(), 'login_key'=>$key));
}
}
}
app/code/local/Easylife/Simulate/controllers/IndexController.php
- অটোলজিন তৈরি করে এমন সীমানা নিয়ামক।
<?php
class Easylife_Simulate_IndexController extends Mage_Core_Controller_Front_Action{
public function indexAction(){
$id = $this->getRequest()->getParam('id');
$key = $this->getRequest()->getParam('login_key');
if (empty($key)){
$this->_redirect('');
}
else{
$customer = Mage::getModel('customer/customer')->load($id);
if ($customer->getId() && $customer->getLoginKey() == $key){
$customer->setLoginKey('')->save();
Mage::getSingleton('customer/session')->setCustomerAsLoggedIn($customer);
Mage::getSingleton('customer/session')->renewSession();
}
$this->_redirect('customer/account/index');
}
}
}
app/code/local/Easylife/Simulte/Helper/Data.php
- মডিউল সহায়ক
<?php
class Easylife_Simulate_Helper_Data extends Mage_Core_Helper_Abstract{
}
এটাই. এটা আমার জন্য কাজ seams। আমি যেমন প্রশ্নে বলেছিলাম, খারাপ দিকটি হ'ল যদি 2 প্রশাসক একই সময়ে (প্রায়) একই গ্রাহকের জন্য লগইন বোতামটি টিপেন, তবে তাদের মধ্যে একটিও লগ ইন করতে পারবেন না But তবে তিনি কয়েক সেকেন্ড পরে প্রক্রিয়াটি পুনরাবৃত্তি করতে পারবেন।