diff --git a/core/lib/Thelia/Core/Event/LostPasswordEvent.php b/core/lib/Thelia/Core/Event/LostPasswordEvent.php new file mode 100644 index 000000000..fe1f9dc5f --- /dev/null +++ b/core/lib/Thelia/Core/Event/LostPasswordEvent.php @@ -0,0 +1,51 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace Thelia\Core\Event; + + +/** + * Class LostPasswordEvent + * @package Thelia\Core\Event + * @author Manuel Raynaud + */ +class LostPasswordEvent extends ActionEvent { + + protected $email; + + public function __construct($email) + { + $this->email = $email; + } + + /** + * @return mixed + */ + public function getEmail() + { + return $this->email; + } + + + +} \ No newline at end of file diff --git a/core/lib/Thelia/Form/CustomerLostPasswordForm.php b/core/lib/Thelia/Form/CustomerLostPasswordForm.php new file mode 100644 index 000000000..d950bf614 --- /dev/null +++ b/core/lib/Thelia/Form/CustomerLostPasswordForm.php @@ -0,0 +1,96 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace Thelia\Form; + +use Symfony\Component\Validator\Constraints\Callback; +use Symfony\Component\Validator\Constraints\Email; +use Symfony\Component\Validator\Constraints\NotBlank; +use Symfony\Component\Validator\ExecutionContextInterface; +use Thelia\Core\Translation\Translator; +use Thelia\Model\CustomerQuery; + +/** + * Class CustomerLostPasswordForm + * @package Thelia\Form + * @author Manuel Raynaud + */ +class CustomerLostPasswordForm extends BaseForm { + + /** + * + * in this function you add all the fields you need for your Form. + * Form this you have to call add method on $this->formBuilder attribute : + * + * $this->formBuilder->add("name", "text") + * ->add("email", "email", array( + * "attr" => array( + * "class" => "field" + * ), + * "label" => "email", + * "constraints" => array( + * new \Symfony\Component\Validator\Constraints\NotBlank() + * ) + * ) + * ) + * ->add('age', 'integer'); + * + * @return null + */ + protected function buildForm() + { + $this->formBuilder + ->add("email", "email", array( + "constraints" => array( + new NotBlank(), + new Email(), + new Callback(array( + "methods" => array( + array($this, + "verifyExistingEmail") + ) + )) + ), + "label" => Translator::getInstance()->trans("Please enter your email address"), + "label_attr" => array( + "for" => "forgot-email" + ) + )); + } + + public function verifyExistingEmail($value, ExecutionContextInterface $context) + { + $customer = CustomerQuery::create()->findOneByEmail($value); + if (null === $customer) { + $context->addViolation("This email does not exists exists"); + } + } + + /** + * @return string the name of you form. This name must be unique + */ + public function getName() + { + return "thelia_customer_creation"; + } +} \ No newline at end of file