setSubmitLabel($this->translate('Update Account')); } /** * {@inheritdoc} */ public function createElements(array $formData) { $this->addElement( 'password', 'old_password', array( 'label' => $this->translate('Old Password'), 'required' => true ) ); $this->addElement( 'password', 'new_password', array( 'label' => $this->translate('New Password'), 'required' => true ) ); $this->addElement( 'password', 'new_password_confirmation', array( 'label' => $this->translate('Confirm New Password'), 'required' => true, 'validators' => array( array('identical', false, array('new_password')) ) ) ); } /** * {@inheritdoc} */ public function onSuccess() { $backend = $this->getBackend(); $backend->update( $backend->getBaseTable(), array('password' => $this->getElement('new_password')->getValue()), Filter::where('user_name', $this->Auth()->getUser()->getUsername()) ); Notification::success($this->translate('Account updated')); } /** * {@inheritdoc} */ public function isValid($formData) { $valid = parent::isValid($formData); if (! $valid) { return false; } $oldPasswordEl = $this->getElement('old_password'); if (! $this->backend->authenticate($this->Auth()->getUser(), $oldPasswordEl->getValue())) { $oldPasswordEl->addError($this->translate('Old password is invalid')); $this->markAsError(); return false; } return true; } /** * Get the user backend * * @return DbUserBackend */ public function getBackend() { return $this->backend; } /** * Set the user backend * * @param DbUserBackend $backend * * @return $this */ public function setBackend(DbUserBackend $backend) { $this->backend = $backend; return $this; } }