コード例 #1
0
ファイル: SignController.php プロジェクト: hamichen/CMS
 public function lostPasswordAction()
 {
     $viewModel = new ViewModel();
     $form = new LostPasswordForm();
     $accountFilter = new AccountFIlter();
     $filter = new InputFilter();
     $filter->add($accountFilter->get('email'));
     $form->setInputFilter($filter);
     $request = $this->getRequest();
     if ($request->isPost()) {
         $data = $request->getPost();
         $form->setData($data);
         if ($form->isValid()) {
             $em = $this->getServiceLocator()->get('doctrine.entitymanager.orm_default');
             // 找到使用者
             if ($user = $em->getRepository('Base\\Entity\\User')->findOneBy(array('email' => $form->get('email')->getValue()))) {
                 $md5 = md5(time() . $user->getUserName() . $user->getEmail());
                 $user->setCheckCode($md5);
                 $em->persist($user);
                 $em->flush();
                 $view = new \Zend\View\Renderer\PhpRenderer();
                 $resolver = new \Zend\View\Resolver\TemplateMapResolver();
                 $resolver->setMap(array('mailLayout' => __DIR__ . '/../../../../Application/view/layout/layout-mail.phtml', 'mailTemplate' => __DIR__ . '/../../../view/user/sign/lost-password-mail.phtml'));
                 $view->setResolver($resolver);
                 $uri = $this->getRequest()->getUri();
                 $scheme = $uri->getScheme();
                 $host = $uri->getHost();
                 $base = sprintf('%s://%s%s', $scheme, $host, $this->getRequest()->getBasePath());
                 $viewModel->setTemplate('mailTemplate')->setVariables(array('user' => $user, 'url' => $base));
                 $content = $view->render($viewModel);
                 $viewLayout = new ViewModel();
                 $viewLayout->setTemplate('mailLayout')->setVariables(array('content' => $content));
                 $body = $view->render($viewLayout);
                 $bodyPart = new \Zend\Mime\Message();
                 $bodyMessage = new \Zend\Mime\Part($body);
                 $bodyMessage->type = 'text/html';
                 $bodyPart->setParts(array($bodyMessage));
                 $message = new Mail\Message();
                 $message->addTo($user->getEmail(), $user->getusername());
                 $message->setFrom('*****@*****.**', '系統通知信');
                 $message->setSubject('重設密碼通知信');
                 $message->setBody($bodyPart);
                 $message->setEncoding('UTF-8');
                 $transport = new Mail\Transport\Sendmail();
                 $transport->send($message);
                 // $viewModel->setTemplate('user/login/send-mail.phtml');
                 $this->flashmessenger()->addMessage($user->getEmail());
                 return $this->redirect()->toRoute('user/default', array('controller' => 'sign', 'action' => 'send-mail'));
                 // return $viewModel;
             } else {
                 $this->flashmessenger()->addMessage('您輸入了錯誤的帳號或電子郵件');
             }
         }
     }
     $viewModel->setVariable('form', $form);
     $viewModel->setVariable('flashMessages', $this->flashMessenger()->getMessages());
     return $viewModel;
 }
コード例 #2
0
ファイル: SetController.php プロジェクト: hamichen/CMS
 public function changePasswordAction()
 {
     $viewModel = new ViewModel();
     $username = $this->getAuthService()->getIdentity()->getUsername();
     $registerForm = new RegisterForm();
     $form = new \Zend\Form\Form('changePasswordForm');
     $form->add($registerForm->get('password'));
     $form->add($registerForm->get('re_password'));
     //  $form->add($registerForm->get('submit')->setAttribute('value', '修改密碼'));
     $accountFilter = new AccountFIlter();
     $filter = new InputFilter();
     $filter->add($accountFilter->get('password'))->add($accountFilter->get('re_password'));
     $form->setInputFilter($filter);
     if ($this->getRequest()->isPost()) {
         $data = $this->getRequest()->getPost();
         $form->setData($data);
         if ($form->isValid()) {
             $em = $this->getServiceLocator()->get('doctrine.entitymanager.orm_default');
             $user = $em->getRepository('Base\\Entity\\User')->findOneBy(array('username' => $username));
             if ($user) {
                 //$user->setPassword(md5($form->get('password')->getValue()));
                 $user->setPassword(\Zend\Ldap\Attribute::createPassword($form->get('password')->getValue()));
                 $em->persist($user);
                 $em->flush();
                 $this->getServiceLocator()->get('Zend\\Log')->info($username . ' changed password');
                 $this->flashMessenger()->addSuccessMessage('更改密碼成功!');
                 return $this->redirect()->refresh();
             }
         }
     }
     $viewModel->setVariable('form', $form);
     return $viewModel;
 }