public function changePasswordAction()
 {
     $form = new ChangePasswordForm();
     $user = $this->getUserManager()->getUserFromAuthenticator();
     $messages = [];
     if ($this->getRequest()->isPost()) {
         $form->setData($this->params()->fromPost());
         if ($form->isValid()) {
             $data = $form->getData();
             $adapter = $this->getAuthenticationService()->getAdapter();
             $adapter->setIdentity($user->getEmail());
             $adapter->setCredential($data['currentPassword']);
             $result = $adapter->authenticate();
             if ($result->isValid()) {
                 $user->setPassword($data['password']);
                 $this->getUserManager()->persist($user);
                 $this->getUserManager()->flush();
                 $this->flashmessenger()->addSuccessMessage('Your password has successfully been changed.');
                 return $this->redirect()->toRoute('user/me');
             }
             $messages = $result->getMessages();
         }
     }
     $view = new ViewModel(['user' => $user, 'form' => $form, 'messages' => $messages]);
     $view->setTemplate('authentication/change-password');
     return $view;
 }
 public function changePasswordAction()
 {
     $auth = new \Zend\Authentication\AuthenticationService();
     if ($auth->hasIdentity()) {
         $user = $auth->getIdentity();
     } else {
         return $this->redirect()->toRoute('signin', array('action' => 'index'));
     }
     if ($user->role == 'Operator') {
         return array('error' => 'You don\'t have permission to do this action');
     }
     $id = (int) $this->params()->fromRoute('id', 0);
     try {
         $userEdit = $this->getUserTable()->getUser($id);
     } catch (\Exception $ex) {
         return $this->redirect()->toRoute('user', array('action' => 'index'));
     }
     if ($userEdit->role == 'System Admin' && $user->userId != $userEdit->userId) {
         return array('error' => 'You don\'t have permission to do this action');
     }
     $item = new ChangePasswordModel();
     $form = new ChangePasswordForm();
     $request = $this->getRequest();
     if ($request->isPost()) {
         $form->setInputFilter($item->getInputFilter());
         $form->setData($request->getPost());
         if ($form->isValid()) {
             $item->userId = $userEdit->userId;
             $item->oldPassword = $form->get('oldPassword')->getValue();
             $item->newPassword = $form->get('newPassword')->getValue();
             $item->confirmNewPassword = $form->get('confirmNewPassword')->getValue();
             //                try {
             $error = $this->getUserTable()->changePasswordForUser($item);
             //                } catch (Exception $exc) {
             //                    $error=$exc;
             //                }
             if (!$error) {
                 return $this->redirect()->toRoute('user', array('action' => 'edit', 'id' => $id));
             }
         }
     }
     return array('id' => $id, 'form' => $form, 'error' => $error);
 }