Example #1
0
 public function onOrderCreated(vStore\Shop\Order $order)
 {
     $customer = $order->customer;
     $entityName = vBuilder\Security::getUserClassName();
     if ($this->context->user->isLoggedIn()) {
         return;
     }
     $potentialUser = $this->context->repository->findAll($entityName)->where('[email] = %s', $customer->email)->fetch();
     if ($potentialUser) {
         // we shall not replace the existing user with another one...
         return;
     }
     $login = $this->context->config->get('user.login');
     $i = '';
     do {
         $newUsername = Strings::webalize($customer->name) . '.' . Strings::webalize($customer->surname) . $i;
         $i++;
         $usernameTaken = $this->context->repository->findAll($entityName)->where('[username] = %s', $newUsername)->fetch();
     } while ($usernameTaken);
     $user = new $entityName($this->context);
     $password = Nette\Utils\Strings::random(8);
     $user->setEmail($customer->email);
     $user->setPassword($password);
     $user->setName($customer->name);
     $user->setSurname($customer->surname);
     if ($login === 'username') {
         $user->setUsername($newUsername);
     }
     $user->setNewsletter(0);
     // No newsletter, by default
     $user->setBypassSecurityCheck(true);
     $user->save();
     // Ulozi to znovu i produkty :-(
     //$order->user = $user;
     //$order->save();
     // Docasny fix
     $orderEntity = $this->context->shop->getOrderEntityClass();
     $this->context->connection->update($orderEntity::getMetadata()->getTableName(), array('user' => $user->id))->where('[id] = %i', $order->id)->execute();
     $this->template->user = $user;
     $this->template->password = $password;
     if ($this->template->getFile() == "") {
         $this->template->setFile(__DIR__ . '/Templates/email.autoRegistration.latte');
     }
     $this->message->addTo($customer->email, $customer->displayName);
     $this->message->setSubject('Vase registrace');
     $this->message->setHtmlBody($this->template);
     $this->message->send();
 }
Example #2
0
 public function registerFormSubmitted(Form $form)
 {
     $values = $form->values;
     $entityName = vBuilder\Security::getUserClassName();
     $potentialUser = $this->getContext()->repository->findAll($entityName)->where('[email] = %s', $values->email)->fetch();
     if ($potentialUser) {
         $form->addError('Uživatel se zadanou emailovou adresou je již registrován. Prosím zvolte nabídku "Přihlašte se" (uprostřed nahoře).');
         return;
     }
     $login = $this->getContext()->config->get('user.login');
     if ($login === 'username') {
         $potentialUser = $this->getContext()->repository->findAll($entityName)->where('[username] = %s', $values->username)->fetch();
         if ($potentialUser) {
             $form->addError('Uživatel se zadaným uživatelským jménem je již registrován.');
             return;
         }
     }
     $user = new $entityName($this->context);
     $user->setEmail($values->email);
     $user->setPassword($values->password);
     $user->setName($values->name);
     $user->setSurname($values->surname);
     if ($login === 'username') {
         $user->setUsername($values->username);
     }
     $user->newsletter = (int) $values->newsletter;
     $user->setBypassSecurityCheck(true);
     $user->save();
     $this->onUserRegistred($user, $values->password);
     $this->context->user->login($user->username, $values->password);
     $this->presenter->flashMessage(sprintf('Registrace proběhla úspěšně. Byl/a jste přihlášen jako uživatel %s. Nyní můžete naplno využívat výhod registrovaných uživatelů.', $user->username));
     if (isset($this->targetLink)) {
         $this->redirect($this->targetLink);
     } else {
         $this->redirect('this');
     }
 }