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; }