Hallo,
ich probiere bereits seit mehreren Stunden ein Plugin zu schreiben, welches einen Fehler ausgibt, wenn eine Emailadresse auf einer “bösen” Domain läuft.
Ich hätte gedacht, dass Shopware_Modules_Admin_ValidateStep2_FilterResult funktionieren würde, aber mein Plugin wird nicht ausgelöst. Nur Shopware_Controllers_Frontend_Register::saveRegisterAction::before hat bis jetzt etwas getan, jedoch weiß ich nicht, wie ich dort dem User einen Fehler anzeigen kann.
class somePlugin extends \Shopware\Components\Plugin {
public static function getSubscribedEvents() {
return ['Shopware_Controllers_Frontend_Register::saveRegisterAction::before' => 'onCheckRegisterValidate'];
//return ['Shopware_Modules_Admin_ValidateStep2_FilterResult' => 'onCheckRegisterValidate'];
}
public function onCheckRegisterValidate(\Enlight_Event_EventArgs $arguments) {
$container = Shopware()->Container();
$active = $container->get('config')->getByNamespace('somePlugin', 'plugin_activated');
$domainList = $container->get('config')->getByNamespace('somePlugin', 'domain_list');
mail('address', 'Active', '');
if ($active == true || !empty($domainList)) {
$subject = $arguments->getSubject();
$post = $subject->Request()->getPost();
list($sErrorMessages, $sErrorFlag) = $arguments->getReturn();
$rules = $arguments->getRules();
$email = $post['register']['personal']['email'];
$domain = explode('@', $email)[1];
$badAddresses = explode(',', $domainList);
mail('address', 'Test', $active . ' ' . $domainList . ' ' . print_r($post,true) . ' ' . print_r($post,true) . ' ' . $email . ' ' . $domain . ' ' . print_r($badAddresses,true));
if (in_array($domain, $badAddresses)) {
mail('address', 'bad', '');
foreach ($rules as $ruleKey => $ruleValue) {
if ($ruleKey === "email") {
$sErrorFlag[$ruleKey] = true;
$sErrorMessages[] = 'Leider ist die Registrierung mit Emailadressen wie ' . $domain . ' nicht möglich. Bitte benutzen Sie einen anderen Anbieter, zum Beispiel gmail.com';
}
}
return [$sErrorMessages, $sErrorFlag];
}
else {
mail('address', 'good', '');
return [$sErrorMessages, $sErrorFlag];
}
}
}
}
Ich weiß nicht, was ich tun soll. Habe bis jetzt noch wenig mit Plugins gemacht.
Vielleicht könnte mir jemand helfen, wie ich am besten einen Fehler anzeige und die Registrierung abbreche.
Im Forum habe ich bereits gesucht und auch gefunden, aber funktionieren wollte es nicht.
Ich weiß, dass es solche Plugins bereits gibt, aber ich würde das lieber selbst schreiben.