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(); }
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'); } }