/** * Change password ajax action * * @param \thebuggenie\core\framework\Request $request */ public function runAccountChangePassword(framework\Request $request) { $this->forward403unless($this->getUser()->hasPageAccess('account')); if ($request->isPost()) { if ($this->getUser()->canChangePassword() == false) { $this->getResponse()->setHttpStatus(400); return $this->renderJSON(array('error' => framework\Context::getI18n()->__("You're not allowed to change your password."))); } if (!$request->hasParameter('current_password') || !$request['current_password']) { $this->getResponse()->setHttpStatus(400); return $this->renderJSON(array('error' => framework\Context::getI18n()->__('Please enter your current password'))); } if (!$request->hasParameter('new_password_1') || !$request['new_password_1']) { $this->getResponse()->setHttpStatus(400); return $this->renderJSON(array('error' => framework\Context::getI18n()->__('Please enter a new password'))); } if (!$request->hasParameter('new_password_2') || !$request['new_password_2']) { $this->getResponse()->setHttpStatus(400); return $this->renderJSON(array('error' => framework\Context::getI18n()->__('Please enter the new password twice'))); } if (!$this->getUser()->hasPassword($request['current_password'])) { $this->getResponse()->setHttpStatus(400); return $this->renderJSON(array('error' => framework\Context::getI18n()->__('Please enter your current password'))); } if ($request['new_password_1'] != $request['new_password_2']) { $this->getResponse()->setHttpStatus(400); return $this->renderJSON(array('error' => framework\Context::getI18n()->__('Please enter the new password twice'))); } $this->getUser()->changePassword($request['new_password_1']); $this->getUser()->save(); framework\Context::clearMessage('auto_password'); $this->getResponse()->setCookie('tbg3_password', $this->getUser()->getHashPassword()); return $this->renderJSON(array('title' => framework\Context::getI18n()->__('Your new password has been saved'))); } }