Magento set Store Id - customer login - but still logged out

Posted by user3564050 on Stack Overflow See other posts from Stack Overflow or by user3564050
Published on 2014-06-05T09:23:07Z Indexed on 2014/06/05 9:24 UTC
Read the original article Hit count: 238

Filed under:
|
|
|

I've got an overridden AccountController in which i set the current store to an other as currently running (example: Customer is in website default and store default, going to login page, click login, my loginPostAction sets the store to id "2" (on website 2) and then executes the parent code loginPostAction. The store is set, of course, but after the login and the redirect to home, the customer is not logged in anymore...

Customer->sendlogindata->myaccountcontroller sets store->original account controller logs in without errors (cause $session customer is set)->redirect to home->customer is not logged in anymore...

i set the store with Mage::app()->setCurrentStore($id); . And in index.php i've got an extra where the store is set to the right id (2) too and this works... but the customer is not logged in anymore.. is that an issue with the session cause different websites ?

I don't want to globally share customer.. each website has his own customers, but every customer has to be able to login on default store.

AccountController.php overridden:

public $Website_Ids = array(
    array("code" => "gerstore", "id" => "3", "website" => "ger"),
    array("code" => "ukstore", "id" => "2", "website" => "uk"),
    array("code" => "esstore", "id" => "4", "website" => "es"),
    array("code" => "frstore", "id" => "5", "website" => "fr")
);

public function loginPostAction()
{
    $login = $this->getRequest()->get('login');
    if(isset($login['username']))
    {
        $found = null;
        foreach($this->Website_Ids as $WebsiteId)
        {
            $customer = Mage::getModel('customer/customer');
            $customer->setWebsiteId($WebsiteId['id']);
            $customer->loadByEmail($login['username']);
            if(count($customer->getData()) > 0)
            {
                $found = $WebsiteId;
            }
        }
        if($found != null && Mage::app()->getStore()->getId() != $found['id'])
        { /* found, so set currentstore to id */
            Mage::app()->setCurrentStore($found['id']);
            $_SESSION['current_store_b2b'] = $found;
        } /* not found, doesn't matter cause mage login exception handling */
    }
    parent::loginPostAction();
}

Index.php :

session_start();
$session = $_SESSION['current_store_b2b'];

if($session != null || $session != "")
{
    Mage::app()->setCurrentStore($session['id']);
    Mage::run($session['code'], 'store');
}
else
{
    /* Store or website code */
    $mageRunCode = isset($_SERVER['MAGE_RUN_CODE']) ? $_SERVER['MAGE_RUN_CODE'] : '';

    /* Run store or run website */
    $mageRunType = isset($_SERVER['MAGE_RUN_TYPE']) ? $_SERVER['MAGE_RUN_TYPE'] : 'store';
    Mage::run($mageRunCode, $mageRunType);
}

Whats the matter ?

Thanks.

© Stack Overflow or respective owner

Related posts about magento

Related posts about login