そのため、ログイン時に、ユーザーが特定の顧客グループに属しているかどうかを確認し、その確認に失敗した場合はログインを防止したいと思います。
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()を実行するなど、これを機能させるためにいくつかの方法を試しましたが、これにより、ログアウト後にセッションエラーメッセージが表示されませんでした()メソッドはすべてのセッションメッセージ(「コア/セッション」を含む)をクリアしています。
何か案は?