以编程方式将客户登录到特定网站

时间:2013-05-15 17:21:51

标签: php magento

场景:

  1. Magento Enterprise 1.12.0.2
  2. 多个网站设置和工作
  3. 网站限制已启用
  4. 使用自定义注册模块对注册进行了大量修改。
  5. 客户最终以编程方式创建,并根据他们注册的国家/地区的某些逻辑分配给网站(ID)。一切都很好。如果我从特定网站导航登录(帐户设置为全局),则客户将被重定向到登录的网站的主页。到目前为止没有问题。
  6. 此时我想更改magento客户登录操作的功能。因此,对于Native magento,客户会根据他们登录的网站重定向到网站,例如:

    • 客户到达/ cn /登陆并登录中文网站。
    • 客户到达/英国/登陆并登录英国网站。
    • 客户到达/ us / landing并登录美国网站。

    我想通过以下方式自定义magento:

    无论从哪里(/ uk或/ cn或/ us)我都想强迫客户登录特定网站(根据他们在注册时指定的国家/地区)。对于这个问题,该网站基本上是任意的。

    * 如何以语法方式将客户登录到特定网站,然后确保将其重定向回该网站的主页? *

    到目前为止,我已经正确地覆盖了 Mage_Customer_AccountController ,并且一直在考虑更改loginPostAction和_loginPostRedirect方法。

    到目前为止我有

    $this->_redirectUrl($session->getBeforeAuthUrl(true));
    

    正常工作,但在重定向时,它会让我回到目标网页,因为客户正在登录他们正在使用的网站,而不是依赖客户国家/地区代码的网站。

    如果你看一下loginPostAction,你会看到:

    try {
             $session->login($login['username'], $login['password']);
    

    我可以指定在哪个网站登录吗?

    如果我查看它调用的会话登录操作:

    public function login($username, $password)
    {
        /** @var $customer Mage_Customer_Model_Customer */
        $customer = Mage::getModel('customer/customer')
            ->setWebsiteId(Mage::app()->getStore()->getWebsiteId());
    
    /*I thought setting the website here would change where 
     *the customer is logged into, but as far i can tell, thats not the case.*/
    
    
        if ($customer->authenticate($username, $password)) {
            $this->setCustomerAsLoggedIn($customer);
            $this->renewSession();
            return true;
        }
        return false;
    }
    

    我已经遵循了authenticate,setCustomerAsLoggedIn和renewSession函数调用,到目前为止,我的尝试都没有结果。我无法强迫客户登录其他网站(与他们来自哪里不同)。

    在我开始吃键盘之前有什么建议吗?

0 个答案:

没有答案