I am trying to set the cookie on user login basis and want to empty on logout. Login working perfect but logout didn't work. For that purpose I used this XML code :
<customer_logout>
<observers>
<customer_is_loggedout_observer>
<type>model</type>
<class>Easylife_Sales_Model_Observer</class>
<method>customerLogout</method>
</customer_is_loggedout_observer>
</observers>
</customer_logout>
<controller_action_predispatch>
<observers>
<customer_is_logged_in_observer>
<class>Easylife_Sales_Model_Observer</class>
<method>setHandle</method>
</customer_is_logged_in_observer>
</observers>
</controller_action_predispatch>
<sales_quote_collect_totals_before>
And PHP code is in observer :
<?php
class Easylife_Sales_Model_Observer
{
public function setHandle(Varien_Event_Observer $observer)
{
Mage::getSingleton('core/session', array('name'=>'frontend'));
$session = Mage::getSingleton('customer/session', array('name'=>'frontend'));
if($session->isLoggedIn()){
$customerData = Mage::getSingleton('customer/session')->getCustomer();
$name = 'loginuser';
$value = $customerData->getId();
Mage::getModel('core/cookie')->set($name, $value);
}else if(Mage::getModel('core/cookie')->get('loginuser') > 0 ){
Mage::getSingleton('customer/session')->loginById(Mage::getModel('core/cookie')->get('loginuser'));
}
}
public function customerLogout(Varien_Event_Observer $observer)
{
if (isset($_COOKIE['loginuser'])) {
unset($_COOKIE['loginuser']);
setcookie('loginuser', null, -1, '/');
}
Mage::getSingleton('checkout/session')->unsetAll();
$cookieName = 'loginuser';
$session = Mage::getSingleton("core/session", array("name"=>"frontend"));
$session->unsetAll();
$session->clear();
//echo Mage::getModel('core/cookie')->get('loginuser');exit();
}
}
I am trying to delete the cookie value and user session on logout click. It shows message of logout successfully and redirect to home page but when reload page it logged in? What I am doing wrong? The else
condition is for multi-website where I want to logged in user when he logged in on one site.