После прочтения некоторых постов я пытаюсь внедрить наблюдателя для запуска события перед входом пользователя.Я объясню: у меня есть форум и блог, использующий другой фреймворк, и я хочу, чтобы посетитель входил в систему только один раз: блог, форум или интернет-магазин.После этого он будет зарегистрирован для других областей.Например, я просматриваю форум и захожу на форум.Затем, когда я открываю магазин, я уже вошел в систему. И то же самое для обратного пути.
Это работает, но только одна проблема: когда я захожу на форум / блог и открываю магазин, мне нужно обновить страницу, чтобы увидеть, что я вошел в систему.
На самом деле,это то же самое поведение, что и при стандартном процессе выхода из Magento: если вы нажмете на ссылку «выход» из вашего магазина Magento, вы все равно увидите, что вы вошли в систему. Существует перенаправление / обновление на домашнюю страницу, а затем вы видите сообщениеВы вышли из системы.Вот мой код:
app / code / community / Fanxiang / UC / etc / config.xml:
[...]
<events>
<http_response_send_before>
<observers>
<UC>
<type>model</type>
<class>Fanxiang_UC_Helper_Data</class>
<method>ucSynlog</method>
</UC>
</observers>
</http_response_send_before>
</events>
[...]
и: app / code / community / Fanxiang / UC / Helper /Data.php
class Fanxiang_UC_Helper_Data extends Mage_Core_Helper_Abstract
{
public function ucSynlog($observer){
if(!empty($_COOKIE['Example_auth'])){
list($Example_uid, $Example_username) = explode("\t", uc_authcode($_COOKIE['Example_auth'], 'DECODE'));
list($Example_uid, $Example_username,$email) =uc_get_user($Example_username);
$customer = Mage::getModel('customer/customer')->setWebsiteId(Mage::app()->getStore()->getWebsiteId())->loadByEmail($email);
Mage::getSingleton('customer/session')->setCustomerAsLoggedIn($customer);
} else {
Mage::getSingleton('customer/session')->logout();
}
Mage::log(time(), null, "logfile.log");
}
}
PB: Я хотел бы не обновлять страницу, чтобы увидеть, что я вошел в систему. Любая идея или помощь приветствуется!
Yoong