1

そのため、ログイン時に、ユーザーが特定の顧客グループに属しているかどうかを確認し、その確認に失敗した場合はログインを防止したいと思います。

AccountControllerを拡張し、簡単なチェックで追加しました。

$customer = Mage::getModel('customer/customer')->loadByEmail($login['username']);
if ($customer->getGroupId() != 2) {
    $msg = Mage::getSingleton('core/session')->addError($this->__('You must have a wholesale account to access this area.'));
    header('Location: '. Mage::getUrl('customer/account/login'));
    exit;
}

ただし、これを実行すると、「Webサイトスコープを使用する場合は、顧客のWebサイトIDを指定する必要があります」というセッションエラーメッセージが返されます。

基本的には、ログインしようとしているユーザーのグループIDを取得するだけでよく、顧客モデルで提供されているメソッドloadByEmail()を使用してこれを取得できると考えました。しかし、ええ、それは金曜日です、そしてどうやらMageLordsは私に遅く滞在することを望んでいます。

ログインを許可し、IDを確認し、確認に失敗した場合は$ session-> logout()を実行するなど、これを機能させるためにいくつかの方法を試しましたが、これにより、ログアウト後にセッションエラーメッセージが表示されませんでした()メソッドはすべてのセッションメッセージ(「コア/セッション」を含む)をクリアしています。

何か案は?

4

1 に答える 1

7

website_idメソッドを使用する前に設定する必要がありますloadByEmail。私は知っています、それは奇妙に思えます、しかしこれは事実によって決定されます、それcustomerはウェブサイトスコープの実体である可能性があります。したがって、モデルがどのWebサイトにも割り当てられていないloadByEmail場合、メソッドは例外をスローします。customer

$customer = Mage::getModel('customer/customer');
$customer->setWebsiteId(Mage::app()->getStore()->getWebsiteId())
        ->loadByEmail($login['username']);
于 2012-10-20T07:48:57.353 に答える