コード例 #1
0
ファイル: RegisterController.php プロジェクト: jkhaled/docdz
 /**
  * validate data and register user in DB
  *
  * @return ViewModel
  */
 public function processAction()
 {
     if ($this->request->isPost()) {
         $form = new RegisterForm();
         $data = $this->params()->fromPost();
         $viewModel = new ViewModel();
         $viewModel->setTemplate('user/register/index');
         $viewModel->setVariable("registerForm", $form);
         $form->setData($data);
         if ($form->isValid()) {
             if ($data["password"] == $data["confirm_password"]) {
                 $em = $this->getServiceLocator()->get('Doctrine\\ORM\\EntityManager');
                 $user = $em->getRepository('Application\\Entity\\User')->findByEmail($data['email']);
                 if ($user) {
                     $viewModel->setVariable('accountExistError', true);
                     return $viewModel;
                 }
                 $user = new User();
                 $user->setFirstname($data['firstname']);
                 $user->setLastname($data['lastname']);
                 $user->setEmail($data['email']);
                 $user->setPhone($data['phone']);
                 $user->setPassword($data['password']);
                 $user->setGender($data['gender']);
                 $user->setBlocked(0);
                 $user->setEmailVerified(0);
                 $user->setPhoneVerified(0);
                 $user->setBanned(0);
                 $user->setRole('u');
                 $user->setExperience(0);
                 $user->setBirthYear($data['birthyear']);
                 $user->setRegistredDate(time());
                 $em->persist($user);
                 $em->flush();
                 $params = ["email" => $user->getEmail()];
                 //$eventManager = $this->getEventManager()->trigger('sendMail', null, );
                 //TODO continue and send mail by Listener class
                 $this->redirect()->toRoute('user', ['controller' => 'register', 'action' => 'success']);
             } else {
                 $viewModel->setVariable('passwordError', true);
                 return $viewModel;
             }
         } else {
             $viewModel->setVariable('formError', true);
             return $viewModel;
         }
     } else {
         $this->redirect()->toRoute('user', ['controller' => "register", "action" => "index"]);
     }
 }
コード例 #2
0
 /**
  * Register new User
  * @return array
  */
 public function registerAction()
 {
     $formManager = $this->serviceLocator->get('FormElementManager');
     $form = $formManager->get('registerForm');
     $form->setInputFilter(new Form\RegisterFilter($this->getObjectManager()));
     $request = $this->getRequest();
     if ($request->isPost()) {
         $form->setData($request->getPost());
         if ($form->isValid()) {
             //CREATE NEW USER
             $user = new User();
             $user->setCompany($this->getRequest()->getPost('company'));
             $user->setFirstName($this->getRequest()->getPost('first_name'));
             $user->setLastName($this->getRequest()->getPost('last_name'));
             $user->setEmail($this->getRequest()->getPost('email'));
             $bcrypt = new Bcrypt();
             $securePass = $bcrypt->create($this->getRequest()->getPost('password'));
             $user->setPassword($securePass);
             $user->setStatus(0);
             $token = md5(uniqid(mt_rand(), true));
             $user->setToken($token);
             $user->setAddress("");
             $user->setZipcode("");
             $user->setCity("");
             $user->setCountry("");
             $user->setPhone("");
             $user->setCreated(new \DateTime("now"));
             $user->setLastModified(new \DateTime("now"));
             //AND SAVE USER TO DB
             $this->getObjectManager()->persist($user);
             $this->getObjectManager()->flush();
             // $newId = $user->getId();
             //COMPOSE AND SEND ACTIVATION MAIL
             //@TODO move hostname/baseurl to config
             $url = "http://www.example.net/login?token=" . $token;
             $translator = $this->getServiceLocator()->get('translator');
             //Create text part of mail
             $textContent = sprintf($translator->translate("registration_mail_text"), $url);
             $text = new MimePart($textContent);
             $text->type = "text/plain";
             //Create html part of mail
             $htmlMarkup = sprintf($translator->translate("registration_mail_html"), $url);
             $html = new MimePart($htmlMarkup);
             $html->type = "text/html";
             //Compose mail
             $body = new MimeMessage();
             $body->setParts(array($text, $html));
             $message = new Message();
             //@TODO move email address etc. to config
             $message->addFrom("*****@*****.**", "example.net")->addTo($user->getEmail(), $user->getFirstName() . " " . $user->getLastName())->setSubject($translator->translate("registration_mail_subject"));
             $message->setBody($body);
             $message->setEncoding("UTF-8");
             //Debug mail: echo $message->toString();
             //Depending on how you send mail..
             /*$transport = new SmtpTransport();
             		$options   = new SmtpOptions(array(
                			'name'              => 'localhost.localdomain',
                			'host'              => '127.0.0.1',
                			'connection_class'  => 'login',
                			'connection_config' => array(
                    			'username' => 'user',
                    			'password' => 'pass',
                			),
             		));
             		$transport->setOptions($options);*/
             //Send email
             $transport = new SendmailTransport();
             $transport->send($message);
             //REDIRECT TO SENT-PAGE
             return $this->redirect()->toRoute('home');
         }
     }
     return array('form' => $form);
 }